首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编译GCC作为静态工具链和插件是否相互排斥?

编译GCC作为静态工具链和插件是否相互排斥?
EN

Stack Overflow用户
提问于 2021-07-03 08:05:11
回答 1查看 355关注 0票数 0

我正在交叉编译AVR GCC,以便在Android上使用交叉工作台。我需要用LTO支持(-flto-fuse-linker-plugin)编译它,从而在.config中传递CT_STATIC_TOOLCHAIN=yCT_CC_GCC_USE_LTO=yCT_CC_GCC_ENABLE_PLUGINSCT_CC_SHARED_LIBSCT_BINUTILS_PLUGINS=y

这就是它的配置方式(build.log的一部分):

最终gcc编译器调试额外配置通过:'--with-headers=/home/anton/x-tools/HOST-aarch64-linux-gnu/avr/avr/include -with-newlib-启用-线程=无-禁用-共享-

-pkgversion=交叉凳子-NG 1.24.0-rc3.1-f7b1ess-禁用-_cxa_atexit-禁用-libgomp-禁用-libmpx禁用-libmpx-禁用-libssp-禁用-lib求四-禁用-libmpx支持-支持--with-gmp=/home/anton/esp8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools --with-mpfr=/home/anton/esp8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools --with-mpc=/home/anton/esp8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools --启用-lto-with libstdcxx=-static,-Bstatic,-I/home/anton/esp8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools/include _ -lstdc++ _ -lm =‘x86_64-BUILD_pc-linux-gnu-gcc’CFLAGS=‘O2 -g -g _-lstdc++_-lstdc++=’-o2-g-lm.build/HOST-aarch64-linux-gnu/avr/buildtools/include‘CXXFLAGS=’‘-O2 -g -I/home/anton/esp8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools/include’CXXFLAGS_FOR_BUILD='-O2 -g -I/home/anton/esp8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools/include‘LDFLAGS=’-L/home/anton/FOR 8266-2/交叉凳-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools/lib -static -lstdc++ -lm‘CFLAGS_FOR_TARGET=’-idirafter -idirafter CXXFLAGS_FOR_TARGET=‘-idirafter LDFLAGS_FOR=’bin/bash‘’/home/anton/FOR 8266-2/交叉凳-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/src/gcc/configure‘'--build=x86_64-build_pc-linux-gnu’-主机=x86_64-build_pc-linux-gnu‘-target=avr’'--prefix=/home/anton/esp8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools‘’-with-local-前缀=/home/anton/x-tools/HOST-aarch64-linux-gnu/avr/avr‘'--with-headers=/home/anton/x-tools/HOST-aarch64-linux-gnu/avr/avr/include’‘-具有-newlib’-启用-线程=无‘-禁用-共享’-与-pkgversion=交叉凳-NG 1.24.0-rc3.1-f7b1ess‘-禁用-_cxa_atexit’‘-禁用-libgomp’‘-禁用-linux’‘-禁用-libmpx‘’-禁用-libssp‘’-禁用-lib44‘’-禁用-lib求积-支持‘'--with-gmp=/home/anton/esp8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools’'--with-mpfr=/home/anton/esp8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools‘’-with-mpc=/home/anton/mpc 8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools‘’-启用-lto‘--具有-宿主-libstdcxx=-静态-libgcc -Wl,-Bstatic,-lstdc++ -lm‘’--启用目标-optspace‘’-禁用-nls‘’-启用-multiarch‘’-启用-language=c,c++‘-启用-plugin’

它会导致以下生成错误:

代码语言:javascript
复制
 > liblto_plugin building gcc with plugin support requires a host that supports -fPIC, -shared, -ldl and -rdynamic.

它似乎具有静态(不依赖于任何东西)和“使用插件”听起来相互排斥。这是正确的吗?

有没有办法不是用lto_plugin共享库构建它,而是静态地构建它(并且仍然使用-flto进行调用)?

PS。我可以避免静态地链接它,但是我不希望它动态链接:

动态/avr/avr/bin/avr-gcc:

64位LSB可执行文件,ARM aarch64,version 1 (SYSV),动态链接,解释器/lib/ld-,用于GNU/Linux3.7.0,

EN

回答 1

Stack Overflow用户

发布于 2021-08-01 06:27:26

不,这不是gcc的工具链支持的。如果您使用ˋct menuconfigˋ(而不是将self写到ˋ中),您不能同时选择这两种方式,因为有许多这样的限制,所以我不使用静态链接。

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

https://stackoverflow.com/questions/68234357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档