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

gcc链接器如何选择/ usr/lib与/ usr/lib64进行库分辨率?

gcc链接器在进行库分辨率时,会根据系统的架构选择使用/usr/lib/usr/lib64目录。这两个目录是用于存放库文件的标准目录,其中/usr/lib用于32位系统,而/usr/lib64用于64位系统。

库分辨率是指在链接过程中,链接器根据程序中所引用的库的名称和路径,去寻找对应的库文件。链接器会按照一定的顺序搜索库文件,直到找到匹配的库文件或者搜索完所有的路径。

在gcc链接器的默认搜索路径中,/usr/lib/usr/lib64是常见的库文件搜索路径。链接器会根据系统的架构自动选择使用哪个目录进行库分辨率。

对于32位系统,链接器会优先搜索/usr/lib目录下的库文件。如果在该目录下找不到匹配的库文件,则会继续搜索其他路径。

对于64位系统,链接器会优先搜索/usr/lib64目录下的库文件。如果在该目录下找不到匹配的库文件,则会继续搜索其他路径。

库分辨率的选择是由链接器在编译和链接过程中自动完成的,无需手动指定。通过正确配置库文件的存放路径,可以确保链接器能够正确地找到所需的库文件。

腾讯云提供了丰富的云计算产品和服务,包括云服务器、云数据库、云存储、人工智能等。具体推荐的产品和产品介绍链接地址可以参考腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

含大量图文解析及例程 | Linux下的ELF文件、链接、加载与库(下)

Glibc有几个重要的辅助程序运行的库 /usr/lib64/crt1.o, /usr/lib64/crti.o, /usr/lib64/crtn.o。...,真正实现C++语言特性的是gcc编译器,所以gcc提供了两个目标文件crtbeginT.o和crtend.o来实现C++的全局构造和析构 – 实际上以上两个高亮出来的函数就是gcc提供的,有兴趣的读者可以自己翻阅...gcc源代码进一步深入学习。...动态链接的可执行文件的第一条指令地址 我们现在动态链接(默认)编译hello程序得到hello-dy: gcc hello.c -o hello-dy 还是先来file一下: 我们看到hello-dy...大家注意,这里还多了一个奇怪的家伙:解释器,interpreter /lib64/ld-linux-x86-64.so.2。 实际上,它就是动态链接文件的链接加载器。

1.5K23

【Linux】软硬链接和动静态库

可以使用cp命令进行复制,例如: sudo cp libexample.a /lib64/ # 将静态库文件复制到系统目录 sudo cp libexample.h /usr/include/ #将静态库头文件复制到系统目录...创建动态库可以使用 gcc 编译器的 -fPIC 和 -shared 选项。...gcc在查动静态库时不会在当前目录下查,所以我们需要指定路径 注意链接动态库形成可执行程序后,运行可执行文件时,系统是需要找到动态库的位置,也就是运行可执行程序时,动态库是需要加载的,所以如何让系统找到动态库...可以使用cp命令进行复制,例如: sudo cp libexample.so /lib64/ # 将动态库文件复制到系统目录 sudo cp libexample.h /usr/include/...总结   如果同时提供动态库与静态库,gcc/g++默认使用动态库;如果要使用静态库必须使用静态链接-static来指明;如果使用动态链接但是只有静态库,那么gcc/g++只能选择静态库进行链接。

15610
  • Ubuntu18.04安装 NVIDIA驱动+CUDA10.2+cuDNN+TensorRT

    1、必选参数解释:因为NVIDIA的驱动默认会安装OpenGL,而Ubuntu的内核本身也有OpenGL、且与GUI显示息息相关,一旦NVIDIA的驱动覆写了OpenGL,在GUI需要动态链接OpenGL...如果又提示,编译器的gcc的版本高于kernel的gcc版本,可先联网运行Ubuntu的”Software Updater”更新下系统即可。...=/usr/local/cuda/lib64:$LD_LIBRARY_PATH 保存后,重新载入配置:source ~/.bashrc或. ~/.bashrc 查看CUDA版本:nvcc -V...安装cuDNN 用tar安装cuDNN:解压后,将其include与lib64下的内容分别移至cuda目录下include与lib64中即可。...mv lib64/* /usr/local/cuda/lib64 用deb安装cuDNN: sudo dpkg -i libcudnn8* # 或依次安装下面三个包: sudo dpkg -i libcudnn8

    2K10

    Linux之动态库和静态库

    动态库(.so):库文件以.so为后缀,程序在运行时才去链接动态库的代码(运行时跳转到动态库中,在动态库中执行库函数)。多个程序共享库的代码。 链接的本质:我们调用库函数时是如何与标准库联系的。...我们可以选择给用户提供我们的.o可重定位目标二进制文件(gcc -c 文件)与头文件。让用户使用我们提供的.o文件和.h文件进行链接即可。...我们在形成可执行程序时,库文件要使用,必须知道库所在的路径,而系统中库默认路径为/lib64。因此,我们要告诉gcc,它要链接的库的路径在哪里(-L)。...gcc对头文件的默认路径为/usr.include,对于库文件的默认路径是/lib64 sudo cp 头文件(包含路径) /usr/include/ sudo cp 库文件(包含路径) /lib64/...总结 拷贝.so文件到系统共享库(动态库)路径下,默认路径是/usr/lib 更改LD_LRBRARY_PATH ldconfig配置/etc/ld.so.conf.d/,ldconfig更新 创建软链接

    59520

    怎样在 Linux 中使用动态和静态库

    这是因为负责在应用启动之前将所有依赖加载进内存的动态链接器没有在它搜索的标准路径下找到这个库。 对新手来说,与常用库(例如 bizp2)版本不兼容相关的问题往往十分令人困惑。...你可以再次执行 ldd 去调用动态链接器,它会检查应用的依赖然后加载进内存。.../lib64/ld-linux-x86–64.so.2 是一个指向 ld-2.30.so 的软链接,它也是我的 Linux 发行版的默认链接器: $ file /lib64/ld-linux-x86-...下面列表展示了不同 Linux 发行版库的标准路径: 红帽家族 32 位:/usr/lib 64 位:/usr/lib64 Debian 家族 32 位:/usr/lib/i386-linux-gnu...) 32 位:/usr/lib32 64 位:/usr/lib 知道去哪找这些关键库可以让库链接失效的问题成为历史。

    2K21

    关于gcc、glibc和binutils模块之间的关系

    它主要完成的工作任务是“预处理”和“编译”,以及提供了与编译器紧密相关的运行库的支持,如libgcc_s.so、libstdc++.so等。...通常,binutils与gcc是紧密相集成的,没有binutils的话,gcc是不能正常工作的。 3、glibc是gnu发布的libc库,也即c运行库。...3、修改gcc的spec文件(/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/specs),更改ld-linux.so.2为/usr/local/lib下的新的共享库装载器...一般/usr/local/bin高于/usr/bin 4、编译时的头文件的搜索路径顺序,与library的查找顺序类似。...一般/usr/local/include高于/usr/include 原文链接:http://www.mike.org.cn/articles/linux-about-gcc-glibc-and-binutils-the-relationship-between-modules

    2.7K91

    Linux软件安装管理之--源码包安装

    -0.so.2 (libc6,x86-64) => /lib64/libyaml-0.so.2 [root@web ~]# ldconfig -v | head // 显示正在扫描的目录及搜索到的动态链接库.../lib/mysql /usr/lib64/mysql [root@web ~]# ll /usr/lib64/mysql total 3068 lrwxrwxrwx 1 root root....0 => /lib64/libpthread.so.0 (0x00007f4cba2b1000)  强行总结 在 Linux 系统当中,最标准的 C 语言编译程序为 gcc ; 在编译的过程当中,可以藉由其他软件提供的函式库来使用该软件的相关机制与功能...; 一般而言,源码安装软件,最好需要 gcc, make, autoconfig 等前驱软件才行,所以在安装 Linux 之初,最好就能够选择 Software development 以及 kernel...动态函式库的扩展名为 *.so 而静态则是 *.a ; 可以利用 ldconfig 与 /etc/ld.so.conf  /etc/ld.so.conf.d/*.conf 来制作动态函式库的链接与快取。

    3.3K51

    C++11 gcc升级到5.2.0后报错:... version GLIBCXX_3.4.17 not found

    编译器进行升级(centos6.5默认安装的gcc编译器是4.4.7,支持C++11需要至少4.8.1)到gcc5.2.0,参照《【Linux】CentOS6.5 gcc升级方式》对编译器进行了升级,耗时两个多小时...等编译升级就绪,编译了C++11的代码,运行时,报错: /usr/lib64/libstdc++.so.6: version ‘GLIBCXX_3.4.17’ not found 查看/usr/lib64...目录查看 [root@t2-centos6 lib64]# ll /usr/local/build/gcc-5.2.0/x86_64-unknown-linux-gnu//libstdc++-v3/src...所以解决办法,就是将libstdc++.so.6.0.21复制到/usr/lib64,然后修改libstdc++.so.6软链接 [root@t2-centos6 lib64]#cd /usr/local...++.so.6.0.21 /usr/lib64 //复制到/usr/lib64 [root@t2-centos6 lib64]# ln -sf libstdc++.so.6.0.21 libstdc

    1.3K10
    领券