提问人:sahe 提问时间:6/20/2022 最后编辑:sahe 更新时间:6/20/2022 访问量:451
在链接阶段对va_start的未定义引用
undefined reference to va_start during the linking phase
问:
嗨,我正在尝试通过在 linux 中链接多个 .so 文件来创建一个可执行文件。
在链接器阶段,我在链接的 e.so 文件之一中出现错误。undefined reference to `va_end'
我试图在整个 /usr/lib 文件夹上搜索该符号以搜索它是否存在于任何 lib 中并且它指向 lstdc++。我已将此库添加到链接器选项中,但它没有按预期工作。
我在 ubuntu 20.04 上使用 gcc-10。您能否帮助解决此链接错误。
链接器命令:
usr/bin/gcc -B,asm,/usr/bin -L,ld,/usr/bin -DINCLUDE_HEADER -isystem/usr/include/c++/10 -isystem/usr/include/x86_64-linux-gnu/c++/10 -isystem/usr/include/c++/10/backward -isystem/usr/lib/gcc/x86_64-linux-gnu/10/include -isystem/usr/lib/gcc/x86_64-linux-gnu/10 -isystem/usr/include -isystem/usr/inlcude/x86_64-linux-gnu/ -isystem/usr/local/include -std=c++11 -fPIC -I/vobs/opensrc/x86_64/boost1580/include -isystem/usr/include/c++/10 -isystem/usr/include/x86_64-linux-gnu/c++/10 -isystem/usr/include/c++/10/backward -isystem/usr/lib/gcc/x86_64-linux-gnu/10/include -isystem/usr/lib/gcc/x86_64-linux-gnu/10 -isystem/usr/include -isystem/usr/inlcude/x86_64-linux-gnu/ -isystem/usr/local/include -std=c++11 -fPIC -Wl,-rpath-link,/lib/x86_64-linux-gnu -Wl,-rpath-link,/usr/lib/x86_64-linux-gnu/ -L/lib/x86_64-linux-gnu -L/usr/lib/x86_64-linux-gnu -o /home/project/netexec -L/runtime/net /home/project/netexec/bin/cfgfile2.o /home/project/netexec/bin/maincfg2.o /home/project/netexec/bin/snmpcfg.o /home/project/netexec/bin/dynlib.o /home/project/netexec/bin/runtimesupport.o /vobs/magnolia/network/bin/netbase_linux2.o /vobs/magnolia/network/bin/misc_linux2.o /vobs/magnolia/network/bin/notemgr.o /home/project/netexec/bin/cfgfiledefs_linux.o
-Wl,-no-as-needed -ldl -lpthread -lsupc++ -lpq -lpqxx -lbootp -L/home/project/folder2/bin -lInterface -L/vobs/linuxlib/usr/lib64 -lcrypto -lcrypto++ /home/project/netexec/bin/netexec.a
error:
/usr/bin/ld: /home/project/folder2/bin/libInterface.so: undefined reference to `va_end'
我有两个问题:
- 如果缺少符号,则在创建文件期间 Interface.so 该符号应出错。但当时它没有抱怨。但现在它给出了错误
- 如何继续修复此错误
答: 暂无答案
评论
va_end
应该是一个宏。我不认为这个名字应该有任何象征。使用它的来源在哪里?libInterface
libstdc++
-std
-D
-isystem
-I
-l
g++
gcc