开发者

Why is gcc failing with 'unrecognized command line option "-L/lusr/opt/mpfr-2.4.2/lib"'?

开发者 https://www.devze.com 2022-12-20 10:56 出处:网络
My sysadmin recently installed a new version of GCC, in /lusr/opt/gc开发者_开发百科c-4.4.3. I tested it as follows:

My sysadmin recently installed a new version of GCC, in /lusr/opt/gc开发者_开发百科c-4.4.3. I tested it as follows:

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

After informing my sysadmin about this, he said to add /lusr/opt/mpfr-2.4.2/lib:/lusr/opt/gmp-4.3.2/lib to my LD_LIBRARY_PATH. After doing this, I get the following error:

mike@canon:~$ gcc test.c
cc1: error: unrecognized command line option "-L/lusr/opt/mpfr-2.4.2/lib"

First, my sysadmin wasn't entirely sure this was the best workaround(though he did say it worked for him...), so is there a better solution?

Second, why am I getting a linker error from cc, and how can I fix it?

Some information which may be helpful:

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)


I would suggest that your sysadmin needs to install the GMP and MPFR libraries from the build machine into the same location on your machine. (There's also the MPC library which you may also need.) Alternatively, your sysadmin needs to install a rebuild of GCC - preferably version 4.5.2 since that is (AFAIK) current - with the correct settings for where the GMP and MPFR libraries will be installed on your machine.

You shouldn't need to set LD_LIBRARY_PATH to use GCC. If you need to do so, it indicates that it was not built for the machine where it is running. Key libraries are missing.

To go further with your debugging, you probably need to use:

gcc -v test.c

This will show you the command lines executed. There is no call for the -L option (which affects the way programs are linked) to be passed to the phase 1 compiler.


This looks like some buggy argument parsing by gcc (it shouldn't complain about -Lfoo).

Can you try setting

LD_LIBRARY_PATH=\ /lusr/opt/mpfr-2.4.2/lib:/lusr/opt/gmp-4.3.2/lib

so that there's a leading space before that mpfr library path?

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号