freexl是读写xls格式文件的库,它的1.0.6版在make时会报错如下
/bin/bash ../libtool --tag=CC --mode=link gcc -I./../headers -g -O2 -L../src -lfreexl -lm -o test_xl test_xl.o -lcharset
libtool: link: gcc -I./../headers -g -O2 -o .libs/test_xl test_xl.o -L../src /par/freexl-1.0.6-main/src/.libs/libfreexl.so -lm -lcharset
/usr/bin/ld: /par/freexl-1.0.6-main/src/.libs/libfreexl.so: undefined reference to `libiconv'
/usr/bin/ld: /par/freexl-1.0.6-main/src/.libs/libfreexl.so: undefined reference to `libiconv_open'
/usr/bin/ld: /par/freexl-1.0.6-main/src/.libs/libfreexl.so: undefined reference to `libiconv_close'
从错误提示信息看,是找不到libiconv,查询网络得知,可以用增加-liconv参数解决。
我用如下命令确实编译成功了
gcc -I./../headers -g -O2 -o .libs/test_xl test_xl.o -L../src /par/freexl-1.0.6-main/src/.libs/libfreexl.so -lm -lcharset -liconv
root@6ae32a5ffcde:/par/freexl-1.0.6-main/examples# .libs/test_xl
.libs/test_xl: error while loading shared libraries: libfreexl.so.1: cannot open shared object file: No such file or directory
root@6ae32a5ffcde:/par/freexl-1.0.6-main/examples# export LD_LIBRARY_PATH=$LIBRARY_PATH:/par/freexl-1.0.6-main/src/.libs
root@6ae32a5ffcde:/par/freexl-1.0.6-main/examples# .libs/test_xl
usage: text_xl path.xls [-verbose]
但是,手工编译终归不方便,在Makefile中增加才是正确的解决办法,查看出错的那个命令,其中有-lcharset,用文本编辑器在Makefile中查找,找到这么一行
LIBS = -lcharset -liconv
将它改为LIBS = -lcharset -liconv, 再执行make就成功完成了。

被折叠的 条评论
为什么被折叠?



