如何阻止 gcc 将 -L 和标准库路径传递给链接器
我有一个脚本需要阻止 gcc 将 -L
与标准库路径一起传递给 ld
。使用-nostdlib
会抑制-lc -lgcc
等,但不会抑制-L
。使用 -Wl,-nostdlib
可以防止链接器使用自己的标准路径,但不会阻止 gcc 将 -L
与标准路径一起传递。有什么方法可以确保 gcc 调用链接器时库路径中没有任何内容(除了我在命令行上显式写入的目录之外)?
I have a script that needs to prevent gcc from passing -L
with the standard library paths to ld
. Using -nostdlib
inhibits the -lc -lgcc
etc. but not the -L
. Using -Wl,-nostdlib
prevents the linker from using its own standard path, but doesn't stop gcc from passing -L
with the standard paths. Is there any way to ensure that gcc calls the linker with nothing in the library path expect the directories I explicitly write on the command line?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我找到了一个解决方案,但它依赖于 gcc 4.4 或更高版本的
-wrapper
选项(脚本的版本略有更新):我的此包装器版本已调整为重新添加备用
crt1. o
和libc
和libgcc
文件代替它阻止访问的文件,但如果需要,您可以轻松地忽略它们。I found a solution but it depends on gcc 4.4 or later for the
-wrapper
option (slightly updated version of the script):My version of this wrapper is tuned to re-add alternate
crt1.o
andlibc
andlibgcc
files in place of the ones it prevents access to, but you could just as easily omit them if needed.