最近做的编译相关的踩坑实录

1.交叉编译glibc

PATH=$PATH:cross_compiler_binary_path
prefix=arm-linux-gnueabi-
export CC="${prefix}gcc  "
export CXX="${prefix}g++  "
export CPP="${prefix}gcc -E  "
export AS="${prefix}as "
export LD="${prefix}ld  "
export GDB=${prefix}gdb
export STRIP=${prefix}strip
export RANLIB=${prefix}ranlib
export OBJCOPY=${prefix}objcopy
export OBJDUMP=${prefix}objdump
export AR=${prefix}ar
export NM=${prefix}nm

../configure --host=arm-linux  CC=arm-linux-gnueabi-gcc --prefix=${PWD}/__install

交叉编译glibc-2.30成功了, 但是2.17却不行,搁置未解决

2.交叉编译gcc

 ../configure --prefix=`pwd`/build/install --enable-checking=release --enable-languages=c,c++ --enable-threads=posix --disable-multilib --host=arm-linux --target=arm-linux

未解决,搁置中:

3.在旧版本glibc系统上运行新版本glibc编译出的程序

2021/04/28

今天学到了一个新知识,以前也会遇到过这样的问题,但是一直也没留心,没有还是一个有点棘手的问题

别人博客里面学到的

开始我想更新目标系统中的glibc,但是事实证明,这种做法真的是太危险了!一旦出错,所有的shell命令几乎都用不了了,系统也会无法重启,

后来转变思路,把新交叉编译的新版本glibc拷贝到目标系统的其他目录中(区别于系统的库目录 比如/root/lib),

再修改  LD_LIBRARY_PATH, 和可执行文件的interpreter,

就是红框框住的interpreter, 这个东西是写死在文件里的, 可执行文件会在这个目录找到动态链接器,就是这个/root/lib/ld-linux.so.3  是新版glibc的重要共享库,

修改interpreter:

patchelf --set-interpreter /root/lib/ld-linux.so.3   ./appbase_example

 

4. 交叉编译zlib

这个简单, 配置一下prefix就没别的了

5.交叉编译mplayer

./configure   --target=arm-linux --prefix=~/install/mplayer

编译时候出现了上面图示的问题, 查了一下decode_frame等应该是zlib库中定义的,就先交叉编译个zlib, 

还有个值得注意的地方是编译mplayer时候 查找库的一个path是 ${prefix}/lib

然后我手工修改了config.mak, 增加了“-lz”, 我觉得正常应该是也可以configure配置的,但是没有找到方法

编译成功啦,  后面我想编译一个带GUI的, 但是貌似又要编个x11了,to be continued

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值