0

I am a non-administrator user of a Linux (CentOS 6.6) server at work. I log in through a terminal program on a windows computer. My problem is that the IT does not feel comfortable upgrading GCC/gfortran for me so I want to just run it from my personal folders. They claim the latest yum (devtoolset-3 for this OS version) will downgrade some other feature they have. It's not the latest version of GCC anyway.

I have downloaded the latest GCC 5.3 binaries and prerequisites from gfortran.com and can almost get my test code to compile. Actually, when I do the following it will compile with -c but will not not link. That folder is where I put the prerequisites and also I copied stuff from the /usr/lib64 directory into there as well.

LD_LIBRARY_PATH=/users/home/me/me/gcc53mark/my_lib export LD_LIBRARY_PATH ./gfortran test.f90 

The error message is as follows: collect2: fatal error: cannot find 'ld'

But ld does exist

-bash-4.1$ whereis ld ld: /usr/bin/ld /usr/share/man/man1/ld.1.gz 
3
  • 1
    I do not understand you. Do you use the GCC binaries or do you compile GCC from source? If you are using the binaries, what do you compile then? Which command are you executing when you get the mentioned error? Commented Feb 8, 2016 at 17:22
  • I am trying to compile my code. gfortran test.f90 results in collect2: fatal error: cannot find 'ld' Commented Feb 8, 2016 at 20:40
  • BUT gfortran -c test.f90 works fine and produces test.o Commented Feb 8, 2016 at 20:41

1 Answer 1

3

After much effort I have answered my own question! To install GCC to my own personal Linux account as a non-administrator, I ended up having to compile GCC and not use the binaries I originally downloaded. My friend was make install which knows where everything needs to go, which I did not have with the binaries.

The key was to install to my user root directory /GCC with the following command provided with the build-it-yourself method (-prefix):

../gcc-5.3.0/configure --prefix$HOME/gcc-5.3.0 --enable-languages=c,c++,fortran --disable-multilib 

For me I had to disable multilib because I guess my system only has 64 bit libraries (I think this was causing my original problem).

Before I got to that point, I had to also download the prerequisites manually since my workplace I suppose blocks the automatic prerequisite downloader as referenced in these instructions.

https://gcc.gnu.org/wiki/InstallingGCC 

Prerequisites need to be taken from here, placed into the root of the directory that gets created when you unzip GCC. Then unzip them and link them as is done in the batch file you have already unzipped ./contrib/download_prerequisites.

ftp://gcc.gnu.org/pub/gcc/infrastructure/ 

Finally I need to run the following command, after it is all up so it looks at the new libraries. I will add this to my .profile when I am ready to fully switch to the local newer version.

LD_LIBRARY_PATH=/users/home/myself/gcc-5.3.0/lib64 export LD_LIBRARY_PATH 

For now I am running gfortran with the following command but also I will add this to my .profile later.

/users/home/myself/gcc-5.3.0/bin/gfortran Test.f90 

It works! Latest version of GCC running from my local Linux user non-administrator account!

Edited to add how we resolved this for the network group: IT did not want to overwrite the original installation so we installed to some network folder /gcc-5.3.0 . Then we modified the group's .profile to add the library and binary paths to that, before the standard path.

Sign up to request clarification or add additional context in comments.

2 Comments

A drawback I discovered is that none of my coworkers can run my programs because they do not (yet) have access to the gcc 5.3 libraries that are called at run time. For some reason the -static compile flag does not work.
Aha, -static-libgfortran for the static build

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.