[gecode-users] Compile gecode for 32-bit under Linux

Guido Tack guido.tack at monash.edu
Mon Nov 21 23:10:03 CET 2016


Hi,

the 4GB memory limit still applies (there's no way around it, you simply can't address more with 32 bit pointers!).

Cheers,
Guido

-- 
GUIDO TACK                  
Senior Lecturer

Information Technology
Monash University
Level 6, Room 6.40, Building H, Caulfield Campus
900 Dandenong Road
Caulfield East VIC 3145
Australia

T: +61 3 9903 1214                      
E: guido.tack at monash.edu <mailto:guido.tack at monash.edu>
http://www.csse.monash.edu/~guidot/ <http://www.csse.monash.edu/~guidot/>


> On 22 Nov. 2016, at 8:35 am, Alexander Schuppisser <a.schuppisser at optor.ch> wrote:
> 
> Hi Christian,
> 
> thank you and sorry for being off-topic. That helped! I could compile for 32bit under Ubuntu 14.04 64 bit with gcc like that:
> --snip--
> sudo apt-get install gcc-multilib g++-multilib
> cd gecode-5.0.0
> ./configure CC="gcc -m32" CXX="g++ -m32" ...
> --snap--
> For others: I had to start with a vanilla gecode-source-tree, after compiling for 64bit and "make clean" it would not work compiling for 32bit. I got this error: "./gecode/flatzinc/parser.hh:68:41: fatal error: gecode/flatzinc/parser.tab.hh"  in the part. deleting the sources and starting directly with 32 bit worked.
> 
> Now I have a working 32bit gecode. Sadly, my fzn-Files doesn't work, I get the foloowing error in 32bit (64bit working):
> --snip--
> terminate called after throwing an instance of 'Gecode::MemoryExhausted'
>   what():  Memory: Heap memory exhausted
> --snap--
> It seems to happen around 4 GB Memory being allocated. Now I wonder: I thought the 4 GB Memory-size limit under 32bit has been circumvented under Linux?
> Do I have do set something before compiling or do I have to do some trick before the run like calling ulimit or alike? Or is it just a limit I have to accept?
> 
> Thank you
> Alexander
> 
> 
> Am 20.11.2016 um 14:33 schrieb Christian Schulte:
>> Hi,
>> 
>> Even though this is not really a Gecode-related question, the catch is that
>> you need to pick up the right compiler, either 64 or 32 bit. You have to
>> figure this out for your platform.
>> 
>> Let's assume the C++ compiler for 32 bit is called g++-32 (that's most
>> likely wrong) and the C compiler is called gcc-32 (again, made up) then you
>> can set the environment variable CXX and CC before you run configure to
>> point to the right C++ and C compilers (one can also pass that to make by
>> make CXX=g++-32 CC=gcc-32).
>> 
>> Hope that helps
>> Christian
>> 
>> --
>> Christian Schulte, www.gecode.org/~schulte <http://www.gecode.org/%7Eschulte>
>> Professor of Computer Science, KTH, cschulte at kth.se <mailto:cschulte at kth.se>
>> Expert Researcher, SICS, cschulte at sics.se <mailto:cschulte at sics.se>
>> -----Original Message-----
>> From: users-bounces at gecode.org <mailto:users-bounces at gecode.org> [mailto:users-bounces at gecode.org <mailto:users-bounces at gecode.org>] On Behalf
>> Of Alexander Schuppisser
>> Sent: Saturday, November 19, 2016 23:37
>> To: users at gecode.org <mailto:users at gecode.org>
>> Subject: [gecode-users] Compile gecode for 32-bit under Linux
>> 
>> Hi,
>> 
>> I'd like to compare the performance of a 64-bit version of fzn-gecode to a
>> 32-bit-version unter Linux (Ubuntu 16.04 or 14.04) for a certain problem.
>> But I could not crosscompile it.
>> 
>> I know that it's possible, because in the Minizinc IDE is a fzn-gecode for
>> 32 bit. But this version has dependencies to Qt (which I don't have running
>> it on a server). That's how I compile what I need on 64 bit:
>> 
>> static:
>> 
>> export PREFIX="/home/nath/apps/gecode-5.0.0"
>> ./configure \
>>   --prefix="$PREFIX" --enable-float-vars=no --enable-examples=no
>> --enable-qt=no --enable-gist=no --enable-doc-dot=no \
>>   --enable-doc-tagfile=no --enable-driver=no --enable-examples=no
>> --enable-scheduling=no --enable-graph=no --enable-minimodel=no \
>>   --enable-static --disable-shared
>> 
>> shared:
>> 
>> export PREFIX="/home/nath/apps/gecode-5.0.0"
>> CFLAGS="-Wl,-rpath,$PREFIX/lib" CXXFLAGS="-Wl,-rpath,$PREFIX/lib" \
>>    ./configure \
>>   --prefix="$PREFIX" --enable-float-vars=no --enable-examples=no
>> --enable-qt=no --enable-gist=no --enable-doc-dot=no \
>>   --enable-doc-tagfile=no --enable-driver=no --enable-examples=no
>> --enable-scheduling=no --enable-graph=no --enable-minimodel=no
>> 
>> Now what to cange / add to get a 32-bit binary in the end?
>> 
>> I tried a lot of things with Flags and setting env-Variables before
>> compiling found as general tips for cross compiling, but nothing worked for
>> fzn-gecode. What do I need to do?
>> 
>> Thank you
>> 
>> Alexander
>> 
> 
> _______________________________________________
> Gecode users mailing list
> users at gecode.org
> https://www.gecode.org/mailman/listinfo/gecode-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.gecode.org/pipermail/users/attachments/20161122/5bde47c4/attachment.html>


More information about the users mailing list