社区首页 >问答首页 >静态连接gcc的构建

静态连接gcc的构建
EN

Stack Overflow用户
提问于 2018-03-25 02:30:42
回答 1查看 630关注 0票数 1

我从源头上建立了自己的gcc

代码语言:javascript
代码运行次数:0
复制
/configure --host=x86_64-linux-gnu --target=x86_64-linux-gnu --enable-checking=release --enable-languages=c,c++ --disable-multilib --program-suffix=-6.4 --prefix=/home/martin/devel/gcc-6.4.0-build
make

一切都进行得很顺利,除非我希望使用cmake构建具有静态运行时的共享库,如下所示:

代码语言:javascript
代码运行次数:0
复制
cmake_minimum_required(VERSION 2.6)

SET(CMAKE_C_COMPILER /home/martin/devel/gcc-6.4.0-build/bin/gcc-6.4)
SET(CMAKE_CXX_COMPILER /home/martin/devel/gcc-6.4.0-build/bin/g++-6.4)
project(Foo)
add_library(FooLib SHARED main.cpp)
target_link_libraries(FooLib -static-libgcc -static-libstdc++ -static)

当我尝试这样做时,我会得到以下错误:

代码语言:javascript
代码运行次数:0
复制
/usr/bin/ld: /home/martin/devel/gcc-6.4.0-build/lib/gcc/x86_64-linux-gnu/6.4.0/crtbeginT.o: relocation R_X86_64_32 against `__TMC_END__' can not be used when making a shared object; recompile with -fPIC
/home/martin/devel/gcc-6.4.0-build/lib/gcc/x86_64-linux-gnu/6.4.0/crtbeginT.o: error adding symbols: Bad value

所以我怀疑gcc的建筑不合适,不知道怎么做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-25 02:34:32

您丢失了GCC配置线中的--with-pic。虽然很明显,有时会有一些bug:bug.cgi?id=58638,所以为了安全起见,您应该添加CFLAGS="-fPIC" CXXFLAGS="-fPIC"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49474821

复制
相关文章
static link:关于gcc连接静态库的几种方式
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/83239949
10km
2019/05/25
10.6K0
gcc用法以及静态/动态链接
-E:只进行预处理,不编译 -S:只编译,不汇编 -c:只编译、汇编,不链接 -g:编译器在编译的时候产生调试信息。 -I:指定include包含文件的搜索目录 -o:输出成指定文件名,如果缺省则输出位a.out -L:搜索库的路径 -l:指定程序要链接的库 -w:忽略所有警告 -shared:指定生成动态链接库。 -static:指定生成静态链接库。 -fPIC:表示编译为位置独立的代码,用于编译共享库。目标文件需要创建成位置无关码,概念上就是在可执行程序装载它们的时候,它们可以放在可执行程序的内存里的任何地方。
用户2929716
2018/08/23
1.5K0
gcc用法以及静态/动态链接
GCC编译静态库及动态库
将文件编译为静态库.a # 将cJSON.c编译为cJSON.o, -c只编译不连接 ➜ gcc -c cJSON.c # 组合为静态链接库. 使用cJSON.o创建静态库libcJSON.a ➜ ar -r libcJSON.a cJSON.o # 将静态库作为一个系统共享的静态链接库(lib文件夹) ➜ cp libcJSON.a /usr/local/lib # 此时就可以使用 -l 参数去使用静态库了. ➜ gcc main.c -o main -lcJSON 将文件编译为动态链接库.s
lpe234
2020/07/27
2K0
再议GCC编译时的静态库依赖顺序问题
使用上面的Makefile编译,将会遇到如下所示的“undefined reference”问题:
一见
2018/08/06
3.7K0
Hugo构建静态站点入门
很多站长开发网站时为了推广页面,或者获得更多的回访和流量,会在网站页面添加 “分享到” 插件,用来发布到某些社交网站。因此社会化分享是很多网站常用的功能之一,国内也有很多专业的公司在做,比较出名的包括 j*this,B*hare 等。不过很悲伤的是,这些公司的产品,无一例外的具有一个特点:奇丑无比。丑就算了,还不允许别人修改其设计,结果就是,再好的 UI 设计也毁在这些插件手里了。
莲花海
2020/01/19
6170
Linux基础——gcc编译、静态库与动态库(共享库)
1、静态库的命名格式 lib + 库的名字 + .a 例:libMyTest.a (MyTest为静态库的名字)
全栈程序员站长
2022/11/10
8.7K0
Linux基础——gcc编译、静态库与动态库(共享库)
使用Hexo构建静态博客站
从2014年起,我的博客先后经历了博客第三方平台博客园,Wordpress,Django 框架自建, Tornado框架自建,Pelican 静态博客框架及现在使用的Hexo静态博客框架。 可谓是第三方,动静结合,都经历过了, 但最终还是被爆表的颜值主题和易用性强大的Hexo所深深折服 ,Hexo真香ヾ(o◕∀◕)ノヾ!
Spaceack
2020/11/04
3600
Windows下 Qt 静态编译连接
本文介绍的是Windows下 Qt 静态编译连接,Qt的静态和动态,前面的内容也有所介绍,先来看本文的静态编译。
用户3519280
2023/07/06
4500
GCC 7和LLVM+Clang+libc++abi 4.0的构建脚本
之前的版本发完,有空来更新一下之前的gcc和llvm+clang工具链的编译脚本了。其实GCC 7是才release没多久但是llvm 4.0发布其实有一段时间了。
owent
2018/08/01
9680
六、构建html静态网页项目
2)在gitlab的web端添加公钥 User Settings -->> SSH Keys
jackxiao
2021/11/16
1.2K0
cgo构建引用c的静态链接库
项目中免不了要使用c/c++的工程代码,因此使用cgo引入c的静态库也是不可避免(虽然官方要求尽量使用go构建你的项目,而不是偷巧的导入c代码,尽量保持go项目的纯粹,毕竟go和cgo是两码事)。
DifficultWork
2021/05/08
4.6K0
JDBC静态sql语句连接的工具类编写
本文介绍了一种JDBC静态SQL语句连接池技术,通过该技术可以提升应用程序的性能和稳定性。该连接池技术使用Java和JDBC API,通过创建和管理数据库连接,可以有效地管理数据库资源,提高应用程序的性能和稳定性。同时,该技术还具有易于使用、易于扩展和方便维护的优点。
用户1171305
2017/12/28
1.1K0
CMake 静态库与动态库构建
在前面一篇文章写了如何使用CMake编译“hello world”。这一篇写写构建静态库和动态库。
Rice加饭
2022/05/10
1.8K0
五行代码构建静态博客
之前写过一个基于moco API的虚拟化框架,比较简单但是比较实用,在使用过程中有了一些有趣的实践。今天就分享一个利用moco API框架使用5行代码构建一个静态博客。
FunTester
2019/09/04
3260
GCC、ARM-LINUX-GCC、ARM-ELF-GCC浅析
The GNU Compiler Collection,通常简称GCC,是一套由GNU开发的编译器集,为什么是编辑器集而不是编译器呢?那是因为它不仅支持C语言编译,还支持C++, Ada, Objective C等许多语言。另外GCC对硬件平台的支持,可以所无所不在,它不仅支持X86处理器架构, 还支持ARM, Motorola 68000, Motorola 8800, Atmel AVR, MIPS等处理器架构。
全栈程序员站长
2022/07/18
6.8K0
构建快速、安全、可扩展的静态站点:终极指南
静态站点构建是现代Web开发的热门趋势之一。它可以提供快速加载、安全可靠、易于扩展的网站,而不需要服务器端代码。本文将深入探讨静态站点构建的关键概念,为您提供一份全面的指南,并提供带有实际代码示例的技巧,以帮助您创建卓越的静态网站。
海拥
2023/09/18
3270
构建快速、安全、可扩展的静态站点:终极指南
gcc编译的过程
预处理是读取 c 源程序,对其中的伪指令(以 # 开头的指令,也就是宏)和特殊符号进行“替代”处理;经过此处理,生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。这个文件的含义同没有经过预处理的源文件是相同的,仍然是 C 文件,但内容有所不同。
Gnep@97
2023/08/10
2740
gcc编译的过程
php 伪静态-服务器伪静态和WordPress固定连接设置
  比如百度网站上放了一个abc.html文件,你想访问它就直接输入baidu. com/abc.html。Web服务器看到这样的地址就直接找到这个文件输出给客户端。
宜轩
2022/12/29
4K0
gcc命令
GavinZhou
2018/01/02
1.2K0
再度优化GCC、LLVM、Clang、libc++、libc++abi等套件的构建脚本
一直以来,我都维护了完整的 GCC 工具链构建工具 和 LLVM,Clang,libc++,libc++abi工具链构建工具 。 一方面是为了测试和体验新版本编译器的功能和利用一些更现代化的工具检查代码中的风险,另一方面也是为了给我得很多开源仓库做多版本适配。 其中所有的编译期依赖项(不包括 tar,awk等可执行程序的工具)都是自己构建的,这样也能管理好某些新版本组件需要的新版本依赖项,并且做到跨发行版兼容。同时很多发行版自带的 LLVM+Clang 套件都缺斤少两,有的缺少 clang-analyzer ,有的缺少 clang-format ,也有的缺少 libc++ 和 libc++abi 或者缺少sanitizer组件。我也是根据自己的需要编译并输出了大多数开发工具,甚至还有一些开发库以便二次开发(比如用libclang写工具来复用libcang的AST功能)。
owent
2023/03/06
3.3K0

相似问题

GCC连接静态库

10

GCC ICU 57静态连接

15

gcc与静态库的连接

20

如何用GCC静态连接CRT?

11

可以使用buildroot静态构建gcc吗?

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文