Some updates... Regarding the issue that lvpt.cpp cannot find zlib.h, I added "-I/opt/zlib-1.2.3/include" into liblvpt/Makefile, and now the entire program can be built.
However, if I execute the compiled binary, e.g. $./sim-outorder ./sim-outorder: relocation error: ./sim-outorder: symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference Apparently, something is still not right... Lide 2010/1/7 Lide Duan <[email protected]> > Hi Jesus, > > This time it lasted longer, but ended with: > > /bin/sh: line 1: ./sysprobe: No such file or directory > make[1]: Entering directory `/home/duan/ss3/liblvpt' > /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-g++ > -c lvpt.cpp > lvpt.cpp:44: zlib.h: No such file or directory > make[1]: *** [lvpt.o] Error 1 > make[1]: Leaving directory `/home/duan/ss3/liblvpt' > make: *** [liblvpt/liblvpt.a] Error 2 > > lvpt.cpp is in a subdirectory $SMARTS_HOME/liblvpt, and it also includes > zlib.h. Shall we make some changes to liblvpt/Makefile to let zlib.h be > included? > > > Thanks, > Lide > > 2010/1/7 Jesus Hernandez Tapia <[email protected]> > >> Hi Lide, >> >> In the Makefile, the definition of FFLAGS should be : >> >> FFLAGS = -I/opt/zlib-1.2.3/include (the I in -I must be a capital "i", >> not a lowercase "l") >> >> please try with that change. >> >> Regards, >> >> Jesus >> >> >> >> 2010/1/7 Lide Duan <[email protected]>: >> > Hi Jesus, >> > >> > Sorry to bother again, I did what you suggested, but looks like the >> linker >> > cannot find the zlib include directory: >> > >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-gcc >> > -l/opt/zlib-1.2.3/include -o sysprobe sysprobe.c >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/ld: >> > cannot find -l/opt/zlib-1.2.3/include >> > collect2: ld returned 1 exit status >> > >> > Let me show some details of my system, just in case I am not missing >> > anything else: >> > 1. I installed zlib in /opt/zlib-1.2.3 >> > $ls /opt/zlib-1.2.3/* >> > /opt/zlib-1.2.3/include: >> > zconf.h zlib.h >> > >> > /opt/zlib-1.2.3/lib: >> > libz.a >> > >> > /opt/zlib-1.2.3/share: >> > man >> > >> > 2. In my crosstool built gcc directory: >> > $ls /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/* >> > /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/cpp >> > /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/gcov >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-addr2line >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-ar >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-as >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-c++ >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-c++filt >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-g++ >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-gcc >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-gprof >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-ld >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-nm >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-objcopy >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-objdump >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-protoize >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-ranlib >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-readelf >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-size >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-strings >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-strip >> > >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-unprotoize >> > >> > Note that in the above directory, there is no "ld" but a >> > "i686-unknown-linux-gnu-ld", but the error message always points to >> > /opt/crosstool/.../bin/ld. Does it matter? >> > >> > 3. I will also send my Makefile to you. >> > >> > Thanks, >> > Lide >> > >> > 2010/1/7 Jesus Hernandez Tapia <[email protected]> >> >> >> >> Hi Lide, >> >> >> >> I was able to reproduce the problem and I think I got a solution: >> >> >> >> 1) The linker being used by default by the crosstool built gcc is the >> >> correct one. so no change here. >> >> >> >> 2) Build zlib with the crosstool built gcc and glibc: >> >> >> >> 2a) download the zlib source code from here: >> >> http://www.zlib.net/zlib-1.2.3.tar.gz >> >> >> >> 2b) extract it, configure it and build it as follows: >> >> >> >> $ >> >> >> CC=/opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-gcc >> >> ./configure --prefix=<Path to zlib> >> >> >> >> $ make >> >> $make install >> >> >> >> 3) Search for and modify the following environment variables in the >> >> TurboSMARTS makefile: >> >> >> >> MLIBS = `./sysprobe -libs` -L<path to zlib>/lib -lm -lz >> >> >> >> FFLAGS = -I<Path to zlib>/include (May not be the best place to set >> >> the include directory though, but lets try it for now) >> >> >> >> >> >> 4) Rebuild TurboSMARTS >> >> >> >> >> >> I hope this works well for you. >> >> >> >> Regards, >> >> >> >> Jesus >> >> >> >> 2010/1/6 Lide Duan <[email protected]>: >> >> > 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 >> >> >> >>> >> >> > >> >> >> >>> >> > >> >> >> >>> >> > >> >> >> >>> > >> >> >> >>> > >> >> >> >> >> >> >> >> >> >> >> > >> >> > >> >> > >> > >> > >> > >
