如何解决extern变量未定义,但编译器没有错误
我正在编译我的.so库代码,遇到一个奇怪的问题。 在一个头文件中,我清除了一个变量extern,该变量extern包含在其他.c文件中,并且未在任何位置定义。 代码可以很好地编译,而在运行时会出错。 为什么在编译时没有错误或警告? 我正在使用gcc 9。
解决方法
使用-Wl,--no-undefined
和在命令行上指定函数来自的库。例如,如果库x
使用库y
中定义的函数:
gcc -shared -o libx.so x.c # OK
gcc -shared -o libx.so x.c -Wl,--no-undefined # undefined symbols from lib y
gcc -shared -o libx.so x.c -ly -Wl,--no-undefined # OK again
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。