Linux正确的语法将通过config传递libstdc 的自定义目录

linux correct syntax to pass custom directory for libstdc++.so.6 via config

本文关键字:libstdc 传递 自定义 config 语法 Linux      更新时间:2023-10-16

我有一个自定义编译的gcc 5.4.0,其中包括以下文件夹结构/home/gccprefix/lib64/libstdc++.so.6

到目前为止的编译一直通过配置(例如CC=/home/gccprfix/bin/gcc CFLAGS=-fPIC CFLAGS=-Wfatal-errors CFLAGS=-I/home/gccprefix/header/tr1)传递额外的标志。

,但是现在我有一个问题,用/home/gccprefix/bin/ragel编译了开罗。为了编译我有一个bash脚本,其标志被分配为变量,例如

MYFLAGS="CC=/home/gccprfix/bin/gcc CFLAGS=-fPIC CFLAGS=-Wfatal-errors CFLAGS=-I/home/gccprefix/header/tr1"
.../configure ${MYFLAGS}

ragel用上述/home/gccprefix/bin/gcc编译,没有任何错误。

但是,在开罗的make期间,我得到

ragel: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ragel) 

这是由于GCC找到默认的/usr/lib64/libstdc++.so.6。因此,按下几个线程,我相信我需要扩展传递的标志以配置。

什么是正确的语法

`CFLAGS=-Wl,-rpath,/home/gccprefix/lib64`

或我放下CFLAGS=

`-Wl,-rpath,/home/gccprefix/lib64` 

使用CFLAGS=的第一个选项,新的libstdc++.so.6未传递,并且发生同样的错误,使用没有CFLAGS的发送只会给出一个错误

configure: error: unrecognized option: `--Wl,-rpath,/home/gccprefix/lib64'

那么我使用什么前缀?

正确的语法将为

./configure ... LDFLAGS=-Wl,-rpath=/home/gccprefix/lib64

查看生成的makefiles,您可能可以摆脱CXXFLAG,而不能与CFLAGS完全不使用,而CFLAG根本不用于C - 仅用于一个项目。

注意CFLAGS=-fPIC CFLAGS=-Wfatal-errors CFLAGS=-I...毫无意义,只有-I...将传递给编译器,只传递给C编译器。试试CXXFLAGS="-fPIC -Wfatal-errors -I...",确保配置将其作为单个参数获取。通过myflags将其传递可能无法正常工作。