日期:2014-05-16  浏览次数:21114 次

libtool如何链接静态的c库呀?
要静态编译一个开源的软件,结果发现是用libtool来实现的编译,所幸需要的那个可执行程序链接的库并不多,保有4个,其中两个是我编译出来的,有所了解。摸爬滚打的将对应的动态库改名,然后就会主动链接静态库。这里称为liba.a libb.a。编译出来后用readelf看不到需要这两个动态库了。

但是还有两个库,一个是c库,一个是math库。我尝试用上述方法来解决,但是是不行的。libtool执意要去链接libc.so.6,我都不知道如何去实现了。
$ make
arm-linux-gcc -DHAVE_CONFIG_H -I. -I../..  -I../../include -I../../include  -I/usr/include/ijs -Wall -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wwrite-strings -Werror-implicit-function-declaration -Winline -Wformat=2 -finline-limit=131072   -Disfinite=finite  -O6 -static-libtool-libs -MT ijsgutenprint.o -MD -MP -MF .deps/ijsgutenprint.Tpo -c -o ijsgutenprint.o ijsgutenprint.c
arm-linux-gcc: unrecognized option '-static-libtool-libs'
mv -f .deps/ijsgutenprint.Tpo .deps/ijsgutenprint.Po
/bin/sh ../../libtool --tag=CC   --mode=link arm-linux-gcc  -Disfinite=finite  -O6 -static-libtool-libs   -o ijsgutenprint.5.2 ijsgutenprint.o ../../src/main/libgutenprint.la -lijs  
libtool: link: arm-linux-gcc -Disfinite=finite -O6 -o ijsgutenprint.5.2 ijsgutenprint.o  ../../src/main/.libs/libgutenprint.a -lm -lijs
/opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/bin/ld: cannot find /lib/libc.so.6
collect2: ld returned 1 exit status
make: *** [ijsgutenprint.5.2] 错误 1


libtool的初衷是为了方便,但是我用起来怎么这么困难呢。

我试了-static-libtool-libs  --rpath等等都不行,方法是看自这里《使用 GNU Libtool 创建库》的。
------解决方案--------------------
谢谢分享
------解决方案--------------------
和我同一个问题 我也是这样解决的但是对于大的开源项目行不通 很纠结