Jesus, First of all, as you suggested, I added -L/usr/lib into the makefile. Here is what is shown:
/opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/ld:/usr/lib/libc.so: file format not recognized; treating as linker script /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/ld:/usr/lib/libc.so:5: parse error collect2: ld returned 1 exit status I also noticed that there is no "ld" in the above directory (i.e. /opt/crosstool/.../bin), which only contains a "i686-unknown-linux-gnu-ld". "ld" is in /usr/bin. I suspect that I used a wrong linker? How can I tell gcc to use /usr/bin/ld? The followings are the related content from my Makefile: CC = /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-gcc CXX = /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-g++ OFLAGS = -O3 -Wall MFLAGS = `./sysprobe -flags` MLIBS = `./sysprobe -libs` -L/usr/lib -lm -lz ENDIAN = `./sysprobe -s` MAKE = make AR = ar qcv AROPT = RANLIB = ranlib RM = rm -f RMDIR = rm -f LN = ln -s LNDIR = ln -s DIFF = diff OEXT = o LEXT = a EEXT = CS = ; X=/ Thank you very much!! Lide 2010/1/6 Jesus Hernandez Tapia <[email protected]> > Lide, > > One more thing I noticed is that you are using > > /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/ld > , and it should be /usr/bin/ld. > > Could you please insert the part of the Makefile where you define the > environment variables for your build?, then I can take a look to it. > > Jesus > > 2010/1/6 Jesus Hernandez Tapia <[email protected]>: > > Hi Lide, > > > > I would like to suggest one more thing: > > > > Please find in the Makefile the following line: > > > > MLIBS = `./sysprobe -libs` -lm -lz > > > > and change it to : > > > > MLIBS = `./sysprobe -libs` -L/usr/lib -lm -lz > > > > Rebuild the application after the change to Makefile > > > > Regards, > > > > Jesus > > > > 2010/1/6 Lide Duan <[email protected]>: > >> Yes, they are there...I found both files in /usr/lib. Actually, other > gcc > >> versions I tried seemed to link correctly although they could not > compile > >> successfully at the end. I have no idea why the crosstool built gcc > cannot > >> link to zlib... > >> > >> 2010/1/6 Jesus Hernandez Tapia <[email protected]> > >>> > >>> Lida, > >>> > >>> Do you have the library files installed in your system? Please search > >>> for libz in /usr/lib. There should be files like libz.so and libz.a. > >>> > >>> If the library is not there, you may need to install it. > >>> > >>> Regards, > >>> > >>> Jesus > >>> > >>> > >>> > >>> 2010/1/6 Lide Duan <[email protected]>: > >>> > Hi Jesus, > >>> > > >>> > I think I successfully used the crosstool to build gcc-2.95.3 and > >>> > glibc-2.2.5, as you suggested. But when I compiled SMARTS with the > new > >>> > installed gcc, it gave me the following error: > >>> > > >>> > > >>> > > /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/ld: > >>> > cannot find -lz > >>> > collect2: ld returned 1 exit status > >>> > > >>> > Looks like the linker cannot link to zlib? Do you have any idea about > >>> > this? > >>> > Thank you! > >>> > > >>> > Lide > >>> > > >>> > 2010/1/6 Jesus Hernandez Tapia <[email protected]> > >>> >> > >>> >> Lide, > >>> >> > >>> >> If I remember correctly I used glibc version 2.2.5. > >>> >> Please let us know if this version works for you. > >>> >> > >>> >> Regards, > >>> >> > >>> >> Jesus > >>> >> > >>> >> 2010/1/6 Lide Duan <[email protected]>: > >>> >> > Hi Jesus, > >>> >> > > >>> >> > Thank you for your reply! I suspect that the error I encountered > is > >>> >> > due > >>> >> > to > >>> >> > the glibc version. The current one in my machine is 2.5, but I > >>> >> > believe > >>> >> > gcc > >>> >> > 2.95.3 used an older version. Could you please tell me the glibc > >>> >> > version > >>> >> > you > >>> >> > used with gcc 2.95.3 to compile SMARTS? (Is it something 2.3.x?) > >>> >> > > >>> >> > Thanks, > >>> >> > Lide > >>> >> > > >>> >> > 2010/1/6 Jesus Hernandez Tapia <[email protected]> > >>> >> >> > >>> >> >> Hi Lide, > >>> >> >> > >>> >> >> You are right, to compile SMARTS you need gcc version 2.95.3. > >>> >> >> > >>> >> >> It has been a long time since I did this, but I remember I used > >>> >> >> "crosstool" to install the required version of GCC along with its > >>> >> >> corresponding version of glibc. After this, SMARTS compiled with > no > >>> >> >> problems. > >>> >> >> > >>> >> >> Here is the link to crosstool: http://www.kegel.com/crosstool/ > >>> >> >> > >>> >> >> Regards. > >>> >> >> > >>> >> >> 2010/1/5 Lide Duan <[email protected]>: > >>> >> >> > Thank you for the info, Zhibin! > >>> >> >> > > >>> >> >> > Are you sure it is 2.9.53 but not 2.95.3? Since 2.95.3 is the > gcc > >>> >> >> > 2.9x > >>> >> >> > version I can find on GNU website. I could not find any GCC > >>> >> >> > version > >>> >> >> > as > >>> >> >> > 2.9.53. (If it turns out to be 2.9.53, is there anyway for me > to > >>> >> >> > download > >>> >> >> > it?) > >>> >> >> > > >>> >> >> > Unfortunately, gcc 2.95.3 still gave me the same error...Is > there > >>> >> >> > any > >>> >> >> > known > >>> >> >> > gcc version that is for sure compatible with TurboSMARTS? > >>> >> >> > > >>> >> >> > Thanks, > >>> >> >> > Lide > >>> >> >> > > >>> >> >> > 2010/1/5 yuzhibin <[email protected]> > >>> >> >> >> > >>> >> >> >> Hi > >>> >> >> >> > >>> >> >> >> You need to use gcc 2.9.53 to compile the TurboSMARTS. Good > >>> >> >> >> luck! > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> Best regards, > >>> >> >> >> > >>> >> >> >> Zhibin > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> ________________________________ > >>> >> >> >> > >>> >> >> >> 发件人: Lide Duan [mailto:[email protected]] > >>> >> >> >> 发送时间: Tuesday, January 05, 2010 8:35 AM > >>> >> >> >> 收件人: [email protected] > >>> >> >> >> 主题: What was the gcc/g++ version used to build TurboSMARTS? > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> Hello, > >>> >> >> >> > >>> >> >> >> I am trying to compile the TurboSMARTS codebase on Suse Linux > >>> >> >> >> 10.2. > >>> >> >> >> I > >>> >> >> >> tried two versions of gcc/g++: 3.4.1 and 4.1.2, but they all > gave > >>> >> >> >> the > >>> >> >> >> following errors: > >>> >> >> >> > >>> >> >> >> /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section > >>> >> >> >> .tbss > >>> >> >> >> mismatches non-TLS reference in eval.o > >>> >> >> >> /lib/libc.so.6: could not read symbols: Bad value > >>> >> >> >> collect2: ld returned 1 exit status > >>> >> >> >> > >>> >> >> >> Any idea about this? Could anyone tell me the exact version > used > >>> >> >> >> to > >>> >> >> >> compile TurboSMARTS? > >>> >> >> >> > >>> >> >> >> Thanks, > >>> >> >> >> Lide > >>> >> >> > > >>> >> > > >>> >> > > >>> > > >>> > > >> > >> > > >
