欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

gcc链接顺序

程序员文章站 2022-03-16 20:17:04
...
代码在
https://github.com/killinux/haobasic

#############  调试内容
编译时打印宏内容
https://blog.csdn.net/wlr_tang/article/details/21778587

/* main.c */
#include <stdio.h>
#define __PRINT_MACRO(x) #x
#define PRINT_MACRO(x) #x "=" __PRINT_MACRO(x)
int main(int argc, const char *argv[])
{
#define TEST_MACRO 512
#pragma message(PRINT_MACRO(TEST_MACRO))
        return 0;
}

###########################
保证连接不断
ssh -o ServerAliveInterval=60  root@118.25.212.122

########################################################################

gcc的连接顺序:  从右往左

cmake的 target_link_libraries 也是从下往上

target_link_libraries

https://blog.csdn.net/ssmale/article/details/17225345

#########
error adding symbols: DSO missing from command line
是缺少连接的库,少依赖库了




so没有顺序问题? .a有顺序问题

所以需要Xlinker
[url] https://www.cnblogs.com/wujianlundao/archive/2012/06/06/2538125.html[/url]

使用的是 静态库和动态库怎么区分?
gcc -o output.bin -Xlinker "-(" liba.ar libb.ar -Xlinker "-)" -lrt

#########
gcc编译过程

https://www.cnblogs.com/wjchao/p/7460375.html



静态库:
https://blog.csdn.net/dd_hello/article/details/81782934

生成 testadd.o
g++ -c testadd.c

g++ -c testuseadd.c

ar -crv libtestadd.a testadd.o


ar -crv libtestuseadd.a testuseadd.o


###################
静态库加载
https://blog.csdn.net/a511244213/article/details/48573311


##############
todo:

头文件加载顺序的例子
undefined问题的先后顺序

#################
cmake 出现 undefined reference to 时的处理

CMakeLists.txt中添加:

find_package(Threads)

target_link_libraries(main ${CMAKE_THREAD_LIBS_INIT})

https://blog.csdn.net/yanlonging/article/details/79404969
也可能是
https://blog.csdn.net/linux_Allen/article/details/80218406


相关标签: gcc