标签: c++ dynamic hyperlink lookup symbols
gcc上是否有可用的编译选项来防止运行时出现符号查找错误(并避免在运行时通过生成编译错误发现它)?
实际上,我在执行时有一个未定义的符号:
/path/to/lib/lib.so: undefined symbol _ZNsymbol_name_
gcc可以在编译时阻止用户解决这个问题吗?
答案 0 :(得分:2)
GCC将在编译时防止此错误,前提是已为其链接提供相关库。
如果您有一个不同的共享库,可能安装了旧版本,那么即使编译成功,您也可能会遇到此错误。
在链接期间,您可以使用ld -z now确保预先解析所有符号。或者您可以使用export LD_BIND_NOW=1来设置环境,以确保在程序运行之前解析所有符号。
ld -z now
export LD_BIND_NOW=1
我回答了类似的问题here,在有用的教程中我找到了here。