c - 为什么 gcc 失败并显示 'unrecognized command line option "-L/lusr/opt/mpfr-2.4.2/lib"'?

标签 c gcc compiler-construction path ldflags

我的系统管理员最近在/lusr/opt/gcc-4.4.3 中安装了新版本的 GCC。我对其进行了如下测试:

mike@canon:~$ cat test.c
int main(){
  return 0;
}
mike@canon:~$ gcc test.c
/lusr/opt/gcc-4.4.3/libexec/gcc/i686-pc-linux-gnu/4.4.3/cc1: error while loading shared libraries: libmpfr.so.1: cannot open shared object file: No such file or directory

在通知我的系统管理员后,他说要添加 /lusr/opt/mpfr-2.4.2/lib:/lusr/opt/gmp-4.3.2/lib给我的LD_LIBRARY_PATH .执行此操作后,我收到以下错误:
mike@canon:~$ gcc test.c
cc1: error: unrecognized command line option "-L/lusr/opt/mpfr-2.4.2/lib"

首先,我的系统管理员并不完全确定这是最好的解决方法(尽管他确实说这对他有用......),那么有更好的解决方案吗?

其次,为什么我会收到来自 cc 的链接器错误? ,我该如何解决?

一些可能有用的信息:
mike@canon:~$ env | grep mpfr
OLDPWD=/lusr/opt/mpfr-2.4.2/lib
LD_LIBRARY_PATH=/lusr/opt/mpfr-2.4.2/lib:/lusr/opt/gmp-4.3.2/lib:

mike@canon:~$ echo $LDFLAGS

(the above is a blank line)

最佳答案

我建议您的系统管理员需要将 GMP 和 MPFR 库从构建机器安装到您机器上的相同位置。 (还有您可能还需要的 MPC 库。)或者,您的系统管理员需要安装 GCC 的重建 - 最好是 4.5.2 版,因为它是(AFAIK)当前版本 - 正确设置 GMP 和 MPFR 库的位置安装在您的机器上。

您不需要设置 LD_LIBRARY_PATH 来使用 GCC。如果您需要这样做,则表明它不是为运行它的机器构建的。缺少关键库。

要进一步调试,您可能需要使用:

gcc -v test.c

这将向您显示执行的命令行。没有电话 -L选项(影响程序链接的方式)被传递给阶段 1 编译器。

关于c - 为什么 gcc 失败并显示 'unrecognized command line option "-L/lusr/opt/mpfr-2.4.2/lib"'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4766401/

相关文章:

c - 编写一个程序,使用 for 循环遍历此数组,显示存储在每个索引处的值

c - 通过 IPERF 发送数据包

gcc - Linux kernel 5.4 GCC 9.1.0 不显示代码覆盖率

c++ - 程序在 Ubuntu 14.04 和 GCC 中编译不正确

c# - 我们可以对结构布局做出假设吗?

c++ - Visual Studio 6.0 和 VS 2010 编译器之间的主要区别

c - 用 C 为操作系统编写 shell 模拟器 : Shell not staying active after multiple commands given

c - 为什么我不能通过这个指针 hack 找到元素大小?

c++ - 定义全局数组

c++ - 使用 LLVM 时出现链接器错误