请考虑以下命令:
gcc myfile.c -o myapp.exe -Lmydir -lmylib
mydir
包含以下文件:
`libmylib.a`
我知道默认情况下,gcc
要进行动态链接。但是,您可以看到它找不到libmylib.so
动态库,只有libmylib.a
静态库。
这是否意味着gcc
将静态链接 libmylib.a
到结果可执行文件?
此行为取决于链接器,而不是GCC。标准链接程序的行为是尝试在链接搜索路径的每个路径组件中尝试一个动态库,然后尝试一个静态库。例如,如果所搜索的第一个目录的名称仅包含一个静态库,则即使它具有动态目录,也将根本不会搜索第二个目录。这样,为了使正常的用户期望能够正常工作,需要将同一库的相应动态和静态版本放置在相同的位置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句