You should be able to add it to either makefile.def or Makefile. Try Makefile first and let us know which one works.

To make it work with your version of gcc, changing required_gcc_version will definitely be necessary. I don't know if anyone has tried simflex with that version, so I'm not sure if it will work.

Please keep us updated and let us know whether you have any more difficulties or if it works fine with this change.


Jason



On 10-04-17 12:55 PM, Mahmood Naderan wrote:
mahm...@magma:serengeti$ /usr/bin/g++ -dumpversion
4.4.1
mahm...@magma:serengeti$ /bin/sh --version
/bin/sh: Illegal option --
>If it's not a version of BASH, you might be able to add the line "export SHELL=/bin/bash" at the top of the >main makefile to fix your problem. You mean the makefile itself or makefile.defs? I also suspected to the the bash. Since my current shell is bash and as the error says, makefile seeks for sh.

I also add "REQUIRED_GCC_VERSION_1=4.4.1" at the beginning of makefile.checksetup


*// Naderan *Mahmood;*


------------------------------------------------------------------------
*From:* Jason Zebchuk <[email protected]>
*To:* Mahmood Naderan <[email protected]>
*Cc:* simflex <[email protected]>
*Sent:* Sat, April 17, 2010 6:23:10 PM
*Subject:* Re: skipping GLIBC runtime libraries

Sorry, I forgot to ask the most important question. What happens when you try to run: /usr/bin/g++ -dumpversion directly at the command prompt?

While it does look like it's simply not finding the executable, there are two problems:

First, the line "/bin/sh: [[: not found" shouldn't be there if g++ simply wasn't found, or wasn't executable. Second, the line "/usr/bin/g++ is not a valid executable." indicates that the GCC variable is actually set to the correct value.

This is why I think it might be a problem with the shell.

By default, make uses /bin/sh as the shell when executing commands, not /bin/bash. I believe the makefiles are expecting /bin/sh to actually be the same as /bin/bash, but this might not be the case.

Can you check what "/bin/sh --version" is? If it's not a version of BASH, you might be able to add the line "export SHELL=/bin/bash" at the top of the main makefile to fix your problem.


Jason



On 10-04-17 2:59 AM, Mahmood Naderan wrote:
*mahm...@magma:flexus-3.0.0$* make --version
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for i486-pc-linux-gnu
*mahm...@magma:flexus-3.0.0$* bash --version
GNU bash, version 4.0.33(1)-release (i486-pc-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
*mahm...@magma:flexus-3.0.0$* make -n install
make -s  -r FLEXUS_ROOT=`pwd` -f makefile.install install
if [[ -x /usr/bin/g++ ]] ; then \
   GCC_VER=`/usr/bin/g++ -dumpversion` ; \
if [[ $GCC_VER == "4.4.1" || $GCC_VER == "" || $GCC_VER == "" ]] ; then \
     true ; \
   else \
     echo "/usr/bin/g++ reports its version as $GCC_VER." ; \
     echo "Flexus only supports g++ 4.4.1 or  or ." ; \
echo "You can override this check and force make to continue by adding" ; \
     echo "GCC_VERSION_NOCHECK=true to makefile.defs" ; \
     false ; \
   fi \
 else \
I have also attached the "make -d install". The problem is it can not find my gcc or in another word, it doesnot accept /usr/bin/g++ as a compiler. I noticed in the documents that Flexus is tested on Fedora and SUSE. Does anybody install it on Ubuntu? Maybe the scripts are not compatible with ubuntu.
*// Naderan *Mahmood;*


------------------------------------------------------------------------
*From:* Jason Zebchuk <[email protected]>
*To:* Mahmood Naderan <[email protected]>
*Cc:* [email protected]
*Sent:* Sat, April 17, 2010 12:56:44 AM
*Subject:* Re: skipping GLIBC runtime libraries

Hi,

I'm not quite sure what's happening. It looks like it's probably either a problem with the makefile syntax or bash syntax. If you could run the following commands, I might be able to figure out what's happening:

make --version
sh --version

make -n install
make -d install



Thanks,

Jason



On 16/04/2010 1:56 AM, Mahmood Naderan wrote:
Hi,
Thanks for the info however I can not "make install". First the information about the compiler are:
*mahm...@magma:flexus-3.0.0$* pwd
/home/mahmood/flexus-3.0.0
*mahm...@magma:flexus-3.0.0$* locate g++
/usr/bin/g++
/usr/bin/g++-4.4
/usr/bin/i486-linux-gnu-g++
/usr/bin/i486-linux-gnu-g++-4.4
/usr/share/cmake-2.8/Modules/Platform/Windows-g++.cmake
/usr/share/doc/g++
/usr/share/doc/g++-4.4
/usr/share/doc/gcc-4.4-base/test-summaries/g++.sum.gz
/usr/share/man/man1/g++-4.4.1.gz
/usr/share/man/man1/g++.1.gz
/usr/share/man/man1/i486-linux-gnu-g++-4.4.1.gz
/usr/share/man/man1/i486-linux-gnu-g++.1.gz
/var/lib/dpkg/info/g++-4.4.list
/var/lib/dpkg/info/g++-4.4.md5sums
/var/lib/dpkg/info/g++.list
/var/lib/dpkg/info/g++.postinst
/var/lib/dpkg/info/g++.prerm
And the makefile.defs look like this:
# GCC Compiler Settings
GCC_PATH=/usr
GCC_BINARY=g++
Now when I run "make install" I get this error:
mahm...@magma:flexus-3.0.0$ make install
make -s  -r FLEXUS_ROOT=`pwd` -f makefile.install install
/bin/sh: [[: not found
/usr/bin/g++ is not a valid executable.
You must set GCC_PATH in makefile.defs to point to g++ 4.1.0 installation path. You must set GCC_BINARY in makefile.defs to the name of the GNU g++ 4.1.0 binary
which should be located in GCC_PATH/bin
See Flexus quick start guide for instructions on configuring Flexus.
make[1]: *** [gcc_version] Error 1
make: *** [install] Error 2
Really I don't understand what is "[[".
Thanks,
// Naderan *Mahmood;

------------------------------------------------------------------------
*From:* Jason Zebchuk <[email protected]>
*To:* Mahmood Naderan <[email protected]>
*Cc:* [email protected]
*Sent:* Fri, April 16, 2010 12:15:40 AM
*Subject:* Re: skipping GLIBC runtime libraries

Hi Mahmood,

As the getting started guided discusses in the section on "GLIBC Compatibility", Flexus requires a more recent version of GLIBC to run properly.

The makefile provided with Flexus will check that the appropriate libraries are in place, and it's possible to remove those checks so that Flexus will compile without installing the glibc libraries. However, if you do this running Simics with Flexus loaded will result in unexplainable segmentation faults.

The main problem is that Simics will try to load the GLIBC libraries from its x86-linux/sys/lib/ directory, and the libraries found there are incompatible with the compiler and linker used for Flexus. You can address this in two ways:

1. Use make install to copy the correct libraries to that location, or manually copy the correct libraries to that location. 2. Remove the libraries from that location (being careful to keep backup copies someplace, e.g., in simics/x86-linux/sys/lib/bak/), and rely on a correct setting of LD_LIBRARY_PATH to make sure Simics finds the correct GLIBC libraries.

Depending on how GEMS was compiled doing this *shouldn't* affect GEMS. If GEMS and Flexus have to be compiled with different versions of gcc, then they might require incompatible versions of the GLIBC libraries. If this is the case, you *should* be able to use LD_LIBRARY_PATH when running Simics to ensure that the correct libraries are loaded depending on whether you plan to load GEMS or Flexus modules.

Note that the makefile will ONLY affect the GLIBC libraries, it will not affect any of the other library files that might be associated with GEMS.


Hope this helps,

Jason



On 15/04/2010 3:20 PM, Mahmood Naderan wrote:
Hi,
Is it possible to skip the section 4 of "Preparing the Build Environment" in the getting started document? I have already used GEMS and want to know if I run that part, flexus libraries replace the GEMS.
thanks,
// Naderan *Mahmood;








Reply via email to