编译碰到的问题整理

8 篇文章 0 订阅

交叉编译configure后不能生成静态库

configure完了之后显示:

checking if libtool supports shared libraries... no
checking whether to build shared libraries... no

Libtool claims it does not support shared libraries during cross compilation

因为configure中指定的–host=arm,libtool会将--host=arm等同于-host=arm-unknown-none,所以用--host=arm-none-linux代替就可以了,arm-unknown-none是用于static链接,即使指定了–enable-static=no --enable-shared=yes也是没用的。

在无交叉编译环境中执行autoreconf

无交叉编译环境,就是说我的host是ubuntu,在已经配置好交叉编译的环境中如何回到没有配置前的状态去执行命令,这个找了一下通过env命令就可以解决:

env -i HOME="$HOME" bash -c 'autoreconf --install' 
env -i HOME="$HOME" bash -l -c 'your_command'

提供一个新的bash环境运行后面的命令,-c参数后面跟命令

bash -l不会加载.bash_profile

参考链接:Runing a command without inheriting parent’s environment

所以在我的使用场景中,因为前面的编译已经配置好了交叉编译环境,需要运行autoreconf的时候,在交叉编译环境下是有问题的,所以通过命令env -i HOME="$HOME" bash -c 'autoreconf --install',方便的执行了autoreconf,这里是需要加载.bash_profile文件,所以去掉了-l参数。

shell里面赋值语句=前面不能有空格

export LDFLAGS='-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -fstack-protector-strong -Wl,-z,relro,-z,now -ldrm  -L${SYSROOT}/usr/lib/gstreamer-1.0 -Wl,-rpath -Wl,/usr/lib/gstreamer-1.0'

在LDFLAGS后面的等号之间不小心,写了空格,LDFLAGS就不起作用了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值