修改Makefile使FreeXL库的示例编译成功

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就成功完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值