도와주세요!!
제가 보드에서 실행을 위해 한부분은,, gxlib 압축을 풀면 lib폴더에 arm-linux...폴더 misel-linux...폴더 랑 또 하나의 폴더가 있잖아요?
arm-linux폴더를 보니까 버전이 3.4.3 이라고 되있더라구요.
제가 이 폴더안에 있는 png라든가 jpeg 같은걸 보드에 넣었거든요?
그런데 저의 크로스컴파일러는 4.3.2입니다. 그래서 안된게 당연한건가요?
새로 컴파일 하시라는 말씀은, 라이브러리를 다시 받아서 하는게 낫다는 말씀이신건가요?
이렇게 여쭤본 이유는, 여기 홈피에서 질문답변글을 보다가 컴파일 버전이 다를때는 단순히
gxlib 폴더안에 arm-linux-3.4.2 이 버전 부분을 , 현재 사용되고 있는 컴파일 버전으로 바꾸기만 하면 된다고 하시더라구요
arm-linux-4.3.2 이런식으로 폴더를 바꾸고, 소스 파일을 make하면 문제가 해결되던데..
흠,, 일단 라이브러리를 다시 옮겨봐야 겠네요.
답변 주셔서 감사합니다!!
설치 방법에 보시면 png나 jpeg는 타켓보드의 /usr/lib에 두고 압축을 푸시면 됩니다.
컴파일을 다시 해보시라는 의미는 컴파일러에 따라서 어느정도 차이가 발생 할 수 있기에
지금 사용 하시는 컴파일러 버젼으로 새로 라이브러리 파일을 생성 하시라는 의미 입니다.
답변 감사드립니다.
gxlib 란의 맨처음 부분에 보면 jpeg,libpng,zlib 에 대해서 크로스컴파일 하는 방법에 대해서 나와있더라구요.
물론 jpeg는 버전이 조금 다르지만요,
그 방법대로 해서,
라이브러리 파일들을
arm보드의 lib에 복사 하였습니다.
이 lib 폴더들은 sample.c를 컴파일 할때 필요하므로 따로 폴더(A)에 두었습니다.
다음으로 Makefile 에서
-I 옵션 하나는 위에서 따로 풀더(A) 에 둔 곳에 (jpeglib.h jconfig.h jerror.h 등등이 있는곳)
그리고 또 하나는 ../incfalinux 이곳에 해서 include 하였구요 (gxlib에서 사용되는 함수들이 포함되있는 헤더파일들)
-L옵션은 위에서 따로 폴더(A) 에다가 경로 맞춰주고
컴파일 했습니다.
컴파일은 되었구요..
ㅠㅠ 실행시키니까 똑같은 오류가 뜹니다. ㅠ.ㅠ..
제가 무엇을 잘못 한걸까요..?
제가 MAKEFILE에는 익숙하지가 않아서요,,
만약에 수동으로 컴파일 하고자 한다면, 이렇게 하면 될까요?
arm-linux-gcc -I/...gxlib설치한 곳에 incfalinux폴더 있는곳(헤더파일있음.gx.h gxbdf..h 등이 있음) -I/arm보드용으로 jpeg,png등설치할때 설치된 경로의 include폴더(jerror.h libpng.h 등등 헤더파일있음) -L/...arm보드용으로 jpeg.png등 설치할 때 lib 폴더 ........ -lm -lpng12 -lz -ljpeg sample.c -o sample 이런식으로 했더니 안되더라구요.. 그리고, -lm은 무엇이죠? m.a 라는 거는 없던데.. 그리고 안되는 이유를 보니까 Makefile에는 .c등 위에서 포함시켜준것 외에다른게 많이 있어서 그런거 같습니다.
흠, 정리해서 여쭤본다면, 수동으로 컴파일하고자 한다면 위처럼 말고 어떤식으로 해야할지. 알려주실 수 있을까요?
일단 소스 자체에는 문제가 없어 보입니다.
실행 할때에도 신텍스 에러는 나오지 않았구요.
저 같은 경우는 컴파일러 버젼이 틀리기 때문에 lib 폴더에 있는
jpegsrc.v7.tar.gz, libpng-1.2.40.tar.gz, zlib-1.2.3.tar.gz 의 압축을 풀고
제가 사용하는 컴파일러를 이용해서 컴파일 시켜 주고 인스톨 시켜줬습니다.
우분투에서 테스트 했구요.
당연히 디바이스가 없기 때문에 fb를 못열어 에러 메시지가 나왔으나 바이너리 파일의 정상 동작은 확인 하였습니다.
혹시 해당 타겟 보드에 라이브러리가 정상 설치 되어있는지 확인해보시고
컴파일러 버젼이 다르다면 저처럼 새로 컴파일 하셔서 해보시는 것도 좋을것 같습니다.