如何阻止gcc通过标准库路径传递-L到链接器

我有一个脚本需要阻止gcc传递-L标准库路径到ld 。 使用-nostdlib抑制-lc -lgcc等但不抑制-L 。 使用-Wl,-nostdlib可以防止链接器使用自己的标准路径,但不会阻止gcc使用标准路径传递-L 。 有没有办法确保gcc在库路径中没有任何内容调用链接器期望我在命令行上显式写入的目录?

我找到了一个解决方案,但它依赖于gcc 4.4或更高版本的-wrapper选项(稍微更新了脚本版本):

 inc=/path/to/alt/incl lib=/path/to/alt/libs crt=/path/to/alt/crt1.o gcc -wrapper sh,-c,' x= ; z= ; s= ; for i ; do [ "$z" ] || set -- ; z=1 case "$i" in -shared) s=1 ; set -- "$@" "$i" ;; -Lxxxxxx) x=1 ;; -xxxxxx) x= ; [ "$s" ] || set -- "$@" '"'$crt'"' ;; *) [ "$x" ] || set -- "$@" "$i" ;; esac done exec "$0" "$@" ' -nostdinc -nostdlib -isystem "$inc" -Wl,-xxxxxx "$@" -L"$lib" -Lxxxxxx -Wl,-nostdlib -lc -lgcc 

我的这个包装器的版本被调整为重新添加备用crt1.olibclibgcc文件来代替它阻止访问的文件,但是你可以在需要时轻松省略它们。