批量修改Makefile内容

提出问题

在64位linux上运行某程序时,发现其需要32位的库,其中一个就是fontconfig-2.7.0.tar.gz。然后在linux上编译fontconfig-2.7.0.tar.gz,操作如下:

./configure --prefix=`pwd`/../install/
make
make install

将编译出来的库放到软件中,运行出错。编译出来是64位的。
root@inspur:/usr/lib/x86_64-linux-gnu# file libfontconfig.so.1.8.0
libfontconfig.so.1.8.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5cef2f0e7239d3d7c0ffaafe1dc72773406782a0, stripped
root@inspur:/usr/lib/x86_64-linux-gnu#

如何修改?

这里我采用方法是:将所有 Makefile使用的GCC和LD修改。具体如下:

  • 将ld -m elf_x86_64修改为ld -m elf_i386
  • 将gcc修gcc -m32
  • 检查makefile,发现depmode=gcc3被修改成gcc -m323,这不符合我们的要求,重新修正成gcc3

查看有多少Makefile需要修改:

root@inspur:/home/liufei/test/fontconfig/aaa/fontconfig-2.7.0# find . -name "Makefile"
./fc-case/Makefile
./src/Makefile
./fc-list/Makefile
./fc-scan/Makefile
./fc-query/Makefile
./fc-cat/Makefile
./test/Makefile
./fc-cache/Makefile
./fc-arch/Makefile
./fontconfig/Makefile
./Makefile
./fc-match/Makefile
./fc-lang/Makefile
./doc/Makefile
./fc-glyphname/Makefile
./conf.d/Makefile
root@inspur:/home/liufei/test/fontconfig/aaa/fontconfig-2.7.0# 

如果一个一个去修改,真让人崩溃。有没有什么办法可以一次性修改所有的Makefile呢?

当然有,使用sed即可完成。

#替换ld中的选项,/usr/bin/ld -m elf_x86_64修改为/usr/bin/ld -m elf_i386
sed -i 's/elf_x86_64/elf_i386/g' `find . -name "Makefile"`

#增加m32选项,使用32位gcc
sed -i 's/gcc/gcc -m32/g' `find . -name "Makefile"`

#修改错误的替换
sed -i 's/gcc -m323/gcc -m3/g' `find . -name "Makefile"`

这样修改之后,执行make;make install。

大功告成!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值