libipq 예제 파일 크로스 컴파일시. 에러가 발생합니다.
"root@ubuntu:/home/jacott/Workspace/netFilter# arm-generic-linux-gnueabi-gcc -o t1 t1.c -lipq
t1.c: In function 'die':
t1.c:13: warning: incompatible implicit declaration of built-in function 'exit'
t1.c: In function 'main':
t1.c:51: warning: assignment makes pointer from integer without a cast
/usr/lib/gcc/arm-generic-linux-gnueabi/4.3.2/../../../../arm-generic-linux-gnueabi/bin/ld: skipping incompatible /usr/lib/gcc/arm-generic-linux-gnueabi/4.3.2/../../../../arm-generic-linux-gnueabi/lib/libipq.a when searching for -lipq
/usr/lib/gcc/arm-generic-linux-gnueabi/4.3.2/../../../../arm-generic-linux-gnueabi/bin/ld: skipping incompatible /usr/arm-generic-linux-gnueabi/bin/../lib/libipq.a when searching for -lipq
/usr/lib/gcc/arm-generic-linux-gnueabi/4.3.2/../../../../arm-generic-linux-gnueabi/bin/ld: skipping incompatible /usr/arm-generic-linux-gnueabi/lib/libipq.a when searching for -lipq
/usr/lib/gcc/arm-generic-linux-gnueabi/4.3.2/../../../../arm-generic-linux-gnueabi/bin/ld: cannot find -lipq
"
개발보드에서 iptables 테스트를 위해 libipq 라이브러리를 이용한 소스를 짜보았는데요.
gcc 로 컴파일 할 경우 아무 이상없는데, 크로스 컴파일시 에러가 발생합니다.
검색을 해보아도 답이 안나와 이렇게 질문 올립니다.
[자답] 해결했습니다.
우선 ld 에러에 대해서 찾아보았는데요. ld란 컴파일시 라이브러리 파일들의 링킹과 로더를 하기 위한 파일 (자세한 내용은 검색! ).
[에러설명] /usr/arm-generic-linux-gnueabi/bin/ld 에 libipq가 ld에 등록 안되어 있단 말이구요.
[해결] 반면에 크로스 컴파일 ( arm-generic....)하지 않고 , 일반 컴파일 ( gcc )를 이용했을 경우 아무런 문제가 일어나지 않았습니다.
두개의 컴파일러 비교 결과는 "/usr/lib" 와 "arm-generic.../lib" 에 "libipq.a" 파일의 유무 차이였기에
"/usr/lib"에 있는 "libipq.a"파일을 그대로 "arm-generic.../lib" 에 옮겨 주었습니다.
하지만 위와 동일하게 "skipping incompatible /usr/arm-generic-linux-gnueabi/lib/libipq.a when searching for -lipq" 이러한 말만 되풀이 하는데요.
혹시나 해서 libipq.a 파일을 크로스 컴파일 해보았습니다. [ "libipq.a" 파일은 iptables-1.4.4/libipq/Makefile 파일을 통해 생성됩니다.
Makefile에 CC를 gcc에서 arm-generic-linux-gnueabi-gcc로 변경 후 LD는 /usr/arm-generic-linux-gnueabi/bin/ld 로 설정 후 " sudo su make 하였구요.]
생성된 libipq.a 파일을 /usr/arm-generic-linux-gnueabi/lib에 넣고, arm-generic-linux-gnueabi-gcc -o test test.c -lipq 를 실행한 결과
제대로된 목적파일을 생성할 수 있었습니다.
에효. 새벽에 한바탕 날리쳤내요 으하핳 그래도 해결하고 나니까 뿌듯 !
댓글 달기