首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux基础——gcc编译、静态与动态共享

/app 第二种方法: gcc + 源文件 + -I头文件 + libxxx.a + -o 可执行文件名 gcc main.c -I include lib/libMyTest.a -o app 动态...(共享) 1、动态的命名格式 lib + 的名字 + .so 例:libMyTest.so (MyTest为动态的名字) 2、动态作用分析 共享的代码是在可执行程序运行时才载入内存的.../lib 第三步:使用动态 第一种方法: gcc + 源文件 + -L 动态路径 + -l动态名 + -I头文件目录 + -o 可执行文件名 gcc main.c -L lib -l MyTest.../app (执行失败,找不到链接,没有给动态链接器(ld-linux.so.2)指定好动态 libmytest.so 的路径) 第二种方法: gcc + 源文件 + -I头文件 + libxxx.so...ldd app可以查看当前的链接情况 第一种方法: export LD_LIBRARY_PATH=自定义动态的路径 (只能起到临时作用,关闭终端后失效) LD_LIBRARY_PATH : 指定查找共享

8.4K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux共享、静态、动态详解

    1、静态函数,是在程序执行前就加入到目标程序中去了 ; 2、动态函数共享函数是一个东西(在linux上叫共享对象, 文件后缀是.so ,windows上叫动态加载函数, 文件后缀是.dll)...Linux中命名系统中共享的规则 2....具体用法可以参考info:gcc。 3. 共享函数 共享函数中的函数是在当一个可执行程序在启动的时候被加载。...创建一个共享函数 现在我们开始学习如何创建一个共享函数。其实创建一个共享函数非常容易。首先创建object文件,这个文件将加入通过gcc –fPIC参数命令加入到共享函数库里面。...创建共享 创建共享很容易。首先,使用gcc -fPIC或-fpic标志创建将进入共享的对象文件。-fPIC和-fpic选项可以实现“位置独立代码”生成,这是共享的一个要求; 见下文的差异。

    8.9K11

    Linux下Qt创建共享与链接共享详解

    本次和大家分享的是在Ubuntu下使用Qt生成共享以及在Qt中链接共享的方法。 共享是在Linux下的称呼,在Windows下被称为动态。...生成共享共享实现了计算两个整型数和的功能,过于简单,莫要介意~ ① .h文件内容 #ifndef ADDLIB_H #define ADDLIB_H class AddLib { public...上面的错误是在运行时没有找到共享,在Linux下,可以使用 ldd命令查看一个可执行程序所需的,效果如下: ? 2. 为什么在Qt中运行没有报上面的错误?...由于以前使用共享遇到过上面的问题,但是在刚刚测试共享的时候,为什么没有报错呢?是Qt将生成的共享放到Linux默认的搜索路径下了么?...于是我使用了locate +名 命令进行搜索,但是并没有在其他路径下发现刚刚生成的共享;于是我又去找配置Linux环境变量的文件,发现也没有。

    5.7K20

    gcc编译成动态_gcc动态

    gcc常用编译选项: 选项 含义 -static 链接静态,禁止使用动态 -shared 进行动态编译,链接动态 -Ldir 在动态的搜索路径中增加dir目录 -lname 链接静态(libname.a...)或动态(libname.so)的文件 -fPIC(或fpic) 生成使用相对地址无关的目标代码 方法一: 第一步:使用-shared参数生成动态gcc -shared -fPIC -o libtest.so...test.c 然后把libtest.so复制到/usr/lib64/系统路径下 注意:生成的动态的名字必须是lib+名字.so,之后可以直接使用-ltest来引用动态。...第二步:编译main.c,使用libtest.so动态gcc -o main main.c -L/usr/lib64/ -ltest 方法二: 在编译main.c,并链接libtest.so的时候,...直接指定使用当前目录下的libtest.so文件, 使用命令:gcc -o main main.c .

    1.6K60

    linuxgcc makefile

    相反,留在独立的文件中(动态),在程序启动或运行时由动态链接器(如Linux上的 ld.so)加载。...优点: 内存和磁盘空间效率:多个程序可以共享内存中同一个的单个副本,减少了内存和磁盘的使用。 易于更新:更新文件后,所有使用该动态的程序都会自动使用更新后的版本,无需重新链接。...缺点: 运行时依赖:程序运行时必须能够访问它所依赖的动态共享动态,但是一旦动态缺失,所有的动态链接这个的程序,都无法执行了!...动态在运行时被加载,可以被多个程序共享。...libc-2.17.so 是系统中的标准 C 实现的一个版本,它是许多 Linux 程序运行不可或缺的组成部分。

    5310

    GCC、ARM-LINUX-GCC、ARM-ELF-GCC浅析

    【它依赖于Binutils,可以参考安装GCC】 3. Glibc:包含了主要的c,这个提供了基本的例程,用于分配内存,搜索目录,读写文件,字符串处理等等。...【这个包GCC编译生成的,前辈们为了方便大家开发,就把Glibc放到GCC中】 举例描述下上面3个包是如何进行运作的。...、arm-linux-gcc: arm-linux-gcc是基于ARM目标机的交叉编译软件,前面几年安装arm-linux-gcc交叉编译软件对与一个初级嵌入式工程师来说特别棘手,因为它需要安装多个软件包...六、arm-linux-gcc和arm-elf-gcc: arm-elf-gcc跟arm-linux-gcc一样,也是是基于ARM目标机的交叉编译软件。...arm-linux-gcc使用GNU的Glibc,而arm-elf-gcc一般使用 uClibc/uC-libc或者使用REDHAT专门为嵌入式系统的开发的Cnewlib。

    6.7K10

    Linux下创建自己的共享

    由于windows和linux的本质不同,因此二者的二进制是不兼容的。 Linux操作系统支持的函数分为静态和动态,动态又称共享。...Linux系统有几个重要的目录存放相应的函数,如/lib, /usr/lib。 静态函数、动态函数 A....对一个做ar s等同于对该做ranlib 动态函数的创建 gcc -shared -Wl,-soname,youLibSoname,-o youRealName a.o b.o **linux共享名称分为三段...linkname:一般只包含共享的名字,比如:libmycal.so** 产生.o文件的命令是: gcc -c -fPIC a.c -fPIC:产生位置无关的代码 -c:只编译不链接 创建共享实例...(1)编译产生.o文件 gcc -c -fPIC add.c gcc -c -fPIC sub.c (2)创建共享 gcc -shared -Wl,-soname,libmycal.so.1,-o libmycal.so

    2.4K10

    linuxgcc使用方法_linux怎么用gcc编译

    gcc是GNU编译器套件(GNU Compiler Collection),它包括了C、C++、Objective-C、Fortran、Java、Ada、Go语言和D语言的前端,也包括了这些语言的(如...component in the library path -print-multi-directory 显示不同版本 libgcc 的根目录 -print-multi-lib 显示命令行选项和多个版本搜索路径间的映射...-print-multi-os-directory 显示操作系统的相对路径 -print-sysroot 显示目标目录 -print-sysroot-headers-suffix 显示用于寻找头文件的...前缀 -pipe 使用管道代替临时文件 -time 为每个子进程计时 -specs= 用 的内容覆盖内建的 specs 文件 -std= 指定输入源文件遵循的标准 –sysroot= 将 作为头文件和文件的根目录...bak]$ gcc test.o testfun.o -o test [deng@localhost bak]$ 到此这篇关于Linux gcc命令的具体使用的文章就介绍到这了,更多相关Linux gcc

    6.7K20

    Linux共享控制导出函数

    之前的文章介绍了Linux中对共享中同名函数的处理规则——根据链接的顺序来确定调用哪个函数。 本次介绍共享其他一些有意思的性质。...在我们开发过程中,难免会使用到第三方,而且时不时还需要更新,某些情况下还要兼容不同版本并维护。 按照上次验证的结果,如果两个不同版本中有同名函数,并且需要兼容,那我们如何确定要调用哪个函数呢?...使用链接的顺序来处理,显然不是一个好办法。...【虽然大部分情况下的函数名称都是不一样的】 再来一个场景,当我们拿到第三方和头文件,我们还想看下库里面还有哪些其他的函数接口,这时可以使用 nm -D *.so 进行查看。...gcc 版本4以上可用【未测试】。 测试用例源码: 1.

    2.4K20

    Linux的静态共享详解及实例

    Linux下分为静态共享(也叫动态),当然Windows下也有静态(.lib)和动态(.dll),这里主要是讲解Linux下的静态共享,以及它们的简单实现。        ...在Linux中静态以.a为后缀,首先静态的实现是在文件编译后的链接过程中就被载入到了程序中,那么后续的程序的运行使用就不会再依赖,那么弊端就是将静态载入到程序中会导致程序的体积变大,而且如果静态后续进行了更新...,就只需要链接这一个就够了,并且共享后续的更新依据其版本号也比较方便,但是运行程序时需要依赖共享。        ...共享 对于一个共享来说,它可以有三个名字,虽然这不是必须的,但是对于有后续的版本的维护或者更新来说,最好是规范的使用这三个名字,可以极大的方便我们去维护和更新共享。...下面就还是以上面的例子来创建一个共享

    3.4K21

    linux命令行安装gcc_linux用yum安装gcc

    下面由学习啦小编为大家整理了linux下安装gcc命令的方法,希望大家喜欢! linux下安装gcc命令 1 下载 在GCC网站上或者通过网上搜索可以查找到下载资源。...其它设置 GCC 4.1.2的所有文件,包括命令文件(如gcc、g++)、文件等都在${destdir}目录下分别存放,如命令文件放在bin目录下、文件在 lib下、头文件在include下等。...1) 7.2 路径的设置 将${destdir}/lib路径添加到环境变量LD_LIBRARY_PATH中,例如,如果GCC 4.1.2安装在/usr/local/gcc-4.1.2目录下,在RH Linux...完成了Linux安装GCC,之后你就能轻松地编辑了。.../local/gcc-4.0.1 [root@linux gcc-4.0.1]# make (在目标目录下执行编译) 6、安装gcc: [root@linux gcc-4.0.1]# pwd /usr/

    25.9K31

    Linux编译工具:gcc入门

    动态(.so或.sa):程序在运行的时候才去链接共享的代码,多个程序共享使用的代码,这样就减少了程序的体积。...默认文件是在系统的目录下进行搜索。同样的,-I.选项用于头文件的搜索。 8. 生成共享 生成一个共享,名称的规则是libxxx.so。...将刚才hello.o生成libhello.so的命令为: gcc -shared -fPIC hello.o -o libhello.so 生成了共享之后,可以这样来使用共享gcc -Wall...-lhello 该命令与使用静态的命令相同,但是在共享与静态共存的情况下,优先使用共享。...共享有时候并不不在当前的目录下,为了让gcc能够找得到共享,有下面几种方法: 拷贝.so文件到系统共享路径下,一般指/usr/lib 在~/.bash_profile文件中,配置LD_LIBRARY_PATH

    4.7K50

    linux安装gcc命令步骤(centos安装gcc命令)

    linux安装gcc命令步骤(centos安装gcc命令) >一、前言 本文介绍在CentOS7.8系统下使用YUM升级GCC版本的相关操作步骤。...官网:https://gcc.gnu.org/ 源码包下载: http://ftp.gnu.org/gnu/gcc 特别说明: 目前第三方SCL还没有gcc 11.x以上版本的YUM源,若要升级为11...第三方SCL的devtoolset-6版本已经结束支持,只能通过源码编译安装升级gcc 6.x。...第三方SCL的devtoolset-4及devtoolset-3版本(即gcc 5.x 和 4.9.2版本)已经结束支持,只能通过其他方法安装升级gcc 5.x 和 4.9.2。...若是在RHEL系统上升级GCC,安装第三方SCL后需为系统启用RHSCL存储,使用命令: yum-config-manager --enable rhel-server-rhscl-7-rpms 二

    25.2K21
    领券