我正在运行cmake
,它向我的链接器传递了一个无法识别的标志 ( -rdynamic
),并且它导致了错误。
我无法弄清楚它从哪里获取这个标志,所以我想将其过滤掉。
我可以指定-DCMAKE_LINKER=<linker>
,所以我想要做的是设置<linker>
一个程序来读取其命令行参数,过滤掉坏的参数,然后将结果传递回实际的链接器。
我一直在使用awk '{gsub("-rdynamic", "");print}'
,但我不知道如何使输入stdin和输出ld。
答案1
该bash
脚本循环遍历其参数,忽略那些与字符串“ -rdynamic
”匹配的参数,并将其他任何参数添加到数组中。一旦参数用完,它就会ld
使用过滤后的列表执行。
#!/bin/bash
declare -a finalopts
finalopts=()
for o in "$@"; do
if [ "$o" = "-rdynamic" ] ; then
continue
fi
#add all other options to the list
finalopts+=("$o")
done
exec ld "${finalopts[@]}"