Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 符号表是否包含每个未定义符号的库名称?_C++_Gcc_G++_Nm - Fatal编程技术网

C++ 符号表是否包含每个未定义符号的库名称?

C++ 符号表是否包含每个未定义符号的库名称?,c++,gcc,g++,nm,C++,Gcc,G++,Nm,假设我们有一个共享库libA,它依赖于另一个共享库libB。我们以这种方式构建libA: $ g++ -I/header/files/of/libB -lB libA.cpp -o libA.so libB导出的符号存储在libA的符号表中。但库名“libB.so”存储在哪里?它是否也存储在符号表中?我可以看到每个未定义的libA符号的相应库名吗(例如使用nm工具) 如果libA依赖于libB,libC,libD,我希望看到这样的东西: undefined_symbol_1 - libB.so

假设我们有一个共享库libA,它依赖于另一个共享库libB。我们以这种方式构建libA:

$ g++ -I/header/files/of/libB -lB libA.cpp -o libA.so
libB导出的符号存储在libA的符号表中。但库名“libB.so”存储在哪里?它是否也存储在符号表中?我可以看到每个未定义的libA符号的相应库名吗(例如使用nm工具)

如果libA依赖于libB,libC,libD,我希望看到这样的东西:

undefined_symbol_1 - libB.so
undefined_symbol_2 - libC.so
undefined_symbol_3 - libD.so

etc

在ELF可执行文件中,它存储在可执行文件中的一个符号表中,是的(虽然不是函数名所在的符号表!这是
nm
将提供给您的)

可执行文件中有足够的信息告诉运行时链接器需要哪些动态库,以及在动态库中应该找到哪些符号

readelf
将告诉您更多信息


其他可执行格式将/必须有等效格式,但我无法告诉您有关它们的详细信息。

谢谢。可执行文件是否只包含所需库的列表,或者是否存在从未定义符号到该符号所来自的库名称的映射?