`
haoningabc
  • 浏览: 1476159 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

gcc链接顺序

gcc 
阅读更多
代码在
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


分享到:
评论

相关推荐

    linux gcc安装顺序

    ### Linux GCC安装顺序 #### 步骤1:安装内核相关组件 在开始GCC的安装之前,首先需要安装内核相关的开发文件。这是因为GCC在编译过程中可能需要访问特定于内核的头文件和符号等资源。 ```bash rpm -ivh kernel-...

    GCC包与安装顺序,下载安装即可

    6. **更新链接器**:由于GCC可能需要修改系统默认的链接器,所以安装完成后,需要更新系统的`ld`: ```bash sudo ln -s /usr/local/gcc-11.2.0/bin/gcc /usr/bin/gcc sudo ln -s /usr/local/gcc-11.2.0/bin/g++ ...

    gcc链接脚本详解.pdf

    ### gcc链接脚本详解 #### 一、概览与基础知识 **链接脚本**(Linker Script)在软件开发过程中扮演着重要的角色,特别是在嵌入式系统开发领域。链接脚本控制了链接器如何处理输入文件(如目标文件或链接脚本文件...

    redhat5.3gcc安装所需rpm包及安装顺序

    - binutils:提供汇编、链接等工具,如as、ld。 - glibc:GNU C库,提供标准C函数和系统调用接口。 - kernel-headers:对应当前运行内核版本的头文件,用于编译内核模块或与内核交互的程序。 - mpfr:多精度浮点...

    gcc_rpm包安装及安装顺序

    下面将详细解释GCC RPM包的安装过程及其顺序。 1. **了解GCC**: GCC是GNU项目的一部分,提供C、C++、Fortran、Objective-C等编程语言的编译器。它不仅用于源代码的编译,还包含预处理器、链接器和其他工具,是...

    gcc 入门 (An Introduction to GCC)

    - **库的链接顺序**:链接时库的顺序会影响程序的行为。 - **头文件使用**:外部库通常包含头文件,这些头文件定义了库接口,需要在源代码中通过`#include`指令引用。 #### 七、编译选项详解 - **搜索路径设置**:...

    GCC 11.2 离线安装包

    安装GCC时,可能需要配置特定的选项以链接到之前安装的库。例如,使用`--with-gmp=/path/to/gmp-installation --with-mpfr=/path/to/mpfr-installation --with-mpc=/path/to/mpc-installation`。 GCC的最新版本通常...

    GCC常用命令大全详解

    13. **动态链接:**默认情况下,GCC采用动态链接,生成的程序依赖系统库。 14. **自定义编译规则:**通过Makefile或CMakeLists.txt文件来管理编译过程,更灵活地控制编译选项和顺序。 了解并熟练运用这些GCC/G++...

    GCC for CentOS6.2(32位完整安装包内附安装顺序)

    解压后,进入解压后的目录,并按照GCC的文档或提供的安装顺序进行编译和安装。通常,这包括配置、编译和安装三个步骤: ```bash cd /usr/src/gcc ./configure --prefix=/usr/local/gcc-&lt;version&gt; --enable-bootstrap...

    CentOS7gcc离线安装包.zip

    为了能在系统中直接使用GCC,还需要创建软链接,例如`ln -s /usr/local/gcc/版本号/bin/gcc /usr/bin/gcc`。 7. **验证安装**:最后,你可以通过运行`gcc --version`来验证GCC是否正确安装和配置。 离线安装.txt...

    linux系统gcc离线安装包

    在安装这些包时,通常需要按照特定的顺序进行,首先安装依赖关系较低的包,例如内核头文件和GLIBC的开发包,然后是GCC的组件,最后是MPFR和libmpc这样的库。通过运行RPM命令,比如`rpm -ivh 文件名.rpm`,可以逐个...

    mipsel-linux-gcc4.4.0.tgz

    《mipsel-linux-gcc4.4.0:嵌入式Linux系统开发的关键工具》 在嵌入式系统开发领域,MIPS架构以其低功耗、高性能的特点被广泛应用,而`mipsel-linux-gcc4.4.0.tgz`正是针对MIPS体系结构的嵌入式Linux开发的一款关键...

    升级GCC4.4.7到GCC4.8.2所有依赖包

    6. 更新系统的链接器指向新的GCC版本,例如:`alternatives --install /usr/bin/gcc gcc /usr/local/gcc-4.8.2/bin/gcc 20000 --slave /usr/bin/g++ g++ /usr/local/gcc-4.8.2/bin/g++` 7. 测试新的GCC是否工作正常...

    centos下gcc5.4.0升级包及自动化升级脚本

    7. **重启系统**:最后,为了使系统环境变量和动态链接器加载新的GCC版本,可能需要重启系统。 这个自动化脚本`gccup5.4.0.sh`应该能够简化上述流程,自动完成大部分工作,但用户仍然需要具备一定的Linux基础,以...

    Linux内网环境,离线安装gcc

    4. `glibc-devel-2.17-317.el7.x86_64.rpm`: GLIBC(GNU C Library)的开发库,为编译和链接C程序提供所需的头文件和库。 5. `glibc-headers-2.17-317.el7.x86_64.rpm`: GLIBC的头文件,用于开发与C库交互的程序。 6...

    gcc-to-tasking-migration-guide-for-infineon-aurix.pdf

    本文档是一份详细的指南,用于指导开发者如何...需要注意的是,迁移过程中并不需要严格按照文档中的顺序执行,可以根据实际情况灵活调整,但是必须确保理解GCC工具集中的每一项特性如何在Tasking中找到对应的替代方案。

    GCC编译器-GUN Complier Complier

    安装完成后,开发者可以通过命令行使用`gcc`或`g++`命令来编译和链接源代码,利用`gdb`进行调试。 总结来说,GCC是一个强大的开源编译器集合,涵盖了多种编程语言,而GDB是其配套的调试工具。通过理解GCC的工作流程...

    简单gcc使用教程B

    - 可以使用`-static`选项强制GCC链接静态版本的库。 #### 五、GCC的-L参数 当库文件不在默认的目录中时,可以使用`-L`参数来告诉GCC从哪个目录加载库文件。例如: ``` gcc foo.c -L/home/hxy/lib -lfoo -o foo ``...

Global site tag (gtag.js) - Google Analytics