gpt4 book ai didi

gcc - CMake:使用 gcc 正确链接系统库

转载 作者:行者123 更新时间:2023-12-04 15:01:00 24 4
gpt4 key购买 nike

我有一个依赖于数学库的静态库 mylib。

如果我首先将 mylib 与数学链接,然后链接到我的可执行文件,它会起作用:

add_executable(myapp main.c)
target_link_libraries(mylib m)
target_link_libraries(myapp mylib)

但是,如果我直接与可执行文件进行链接,则在使用 gcc 时它会失败(使用 clang 它可以工作!)
add_executable(myapp main.c)
target_link_libraries(myapp m mylib)

为什么这有什么不同?
我认为无论如何不可能将库链接在一起?

最佳答案

当使用 cmake 的 target_link_libraries这并不意味着你会链接任何东西。而是会在 target 之间创建依赖关系和一个 library类型/ Action link .

我猜第一个示例的实际构建行将导致类似的结果:

gcc -o myapp myapp.o -lmylib -lm

第二个
gcc -o myapp myapp.o -lm -lmylib

.如 mylib引用了 m第二个例子(可能)没有链接。

尝试运行 make VERBOSE=1并研究链接进程的命令行以真正了解发生了什么。 clang 的链接器可能是智能的,并且在链接过程中实际删除库之前等待所有调用被链接。

关于gcc - CMake:使用 gcc 正确链接系统库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15181899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com