我正在尝试编译从互联网下载的一个大项目,并且我有一个自定义脚本,运行 configure、make 和 make install。问题是我想传递一些兼容性标志,但该项目使用 libtool 不识别 LDFLAGS,我必须找到另一种方式来传递我的兼容性标志。因此,在运行 configure 后,我的脚本中的代码看起来像这样:
COMPATFLAG="-gcc-name=/usr/local/gcc-4.2.1/bin/gcc"
sed -i "s/CC -shared/CC -shared ${COMPATFLAG}/g" libtool
${COMPATFLAG}
可能因编译平台不同而有不同的取值,所以我不能在sed语句中直接写明。问题是它没有起作用——我得到了一个空格而不是${COMPATFLAG}
的值。如果我改为使用 sed -i "s/CC -shared/CC -shared TEST/g" libtool
,它将添加字符串"TEST"到文件中。如果我使用单引号,则得到的是 ${COMPATFLAG}
字符串而非变量的值。如果尝试导出${COMPATFLAG}
,仍然不起作用。我不知道为什么会出错。有什么想法吗?
sed
不会介意,并且与参数冲突的可能性微乎其微。 - Jonathan Leffler$'\xFF'
:D=$'\xFF'; sed -i "s${D}CC -shared${D}& ${COMPATFLAG}${D}g" libtool
- konsolebox