building Cog on 64 bits debian

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
25 messages Options
12
Reply | Threaded
Open this post in threaded view
|

building Cog on 64 bits debian

laurent laffont
 
Hi

I try to build a 32bits Cog on Debian 64 bits. I do:

apt-get install libsm-dev libasound2-dev libgl1-mesa-dev cmake g++ libc6-dev-i386 

git clone --depth 1 git://gitorious.org/~laurentlaffont/cogvm/smallharbour.git shvm
cd shvm/codegen-scripts/
export SQUEAKVM=/usr/local/bin/coglinux/squeak
sh ./buildImage.sh -headless
sh ./generate.sh -headless CogUnixConfig
cd ../build/
sh ../codegen-scripts/extract-commit-info.sh
cmake .
make


I have the error:

[ 94%] Built target CogVM
Linking C shared library /root/securedvm/results/vm-display-null
/usr/bin/ld: i386 architecture of input file `CMakeFiles/vm-display-null.dir/root/securedvm/platforms/unix/vm-display-null/sqUnixDisplayNull.c.o' is incompatible with i386:x86-64 output

Any idea ?



Laurent Laffont - @lolgzs

Pharo Smalltalk Screencasts: http://www.pharocasts.com/
Blog: http://magaloma.blogspot.com/
Reply | Threaded
Open this post in threaded view
|

Re: building Cog on 64 bits debian

Mariano Martinez Peck
 
Nicolas Passerini commited a '-m32' flag to the CogUnixConfiguration in order to be able to compile it on a 64bits machine.
Can you check it is still there? maybe it only was added to the VM and not to plugins.

On Sat, Aug 13, 2011 at 11:13 AM, laurent laffont <[hidden email]> wrote:
 
Hi

I try to build a 32bits Cog on Debian 64 bits. I do:

apt-get install libsm-dev libasound2-dev libgl1-mesa-dev cmake g++ libc6-dev-i386 

git clone --depth 1 git://gitorious.org/~laurentlaffont/cogvm/smallharbour.git shvm
cd shvm/codegen-scripts/
export SQUEAKVM=/usr/local/bin/coglinux/squeak
sh ./buildImage.sh -headless
sh ./generate.sh -headless CogUnixConfig
cd ../build/
sh ../codegen-scripts/extract-commit-info.sh
cmake .
make


I have the error:

[ 94%] Built target CogVM
Linking C shared library /root/securedvm/results/vm-display-null
/usr/bin/ld: i386 architecture of input file `CMakeFiles/vm-display-null.dir/root/securedvm/platforms/unix/vm-display-null/sqUnixDisplayNull.c.o' is incompatible with i386:x86-64 output

Any idea ?



Laurent Laffont - @lolgzs

Pharo Smalltalk Screencasts: http://www.pharocasts.com/
Blog: http://magaloma.blogspot.com/




--
Mariano
http://marianopeck.wordpress.com

Reply | Threaded
Open this post in threaded view
|

Re: building Cog on 64 bits debian

laurent laffont
 
On Sat, Aug 13, 2011 at 11:57 AM, Mariano Martinez Peck <[hidden email]> wrote:
 
Nicolas Passerini commited a '-m32' flag to the CogUnixConfiguration in order to be able to compile it on a 64bits machine.
Can you check it is still there? maybe it only was added to the VM and not to plugins.

Seems to be here:

CogUnixConfig>>commonCompilerFlags
...
^ ' -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -m32'


and 

build# cat vm-display-null/CMakeLists.txt |grep m32
add_definitions( -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -m32 -g0 -O2 -msse2 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 

Laurent.

 

On Sat, Aug 13, 2011 at 11:13 AM, laurent laffont <[hidden email]> wrote:
 
Hi

I try to build a 32bits Cog on Debian 64 bits. I do:

apt-get install libsm-dev libasound2-dev libgl1-mesa-dev cmake g++ libc6-dev-i386 

git clone --depth 1 git://gitorious.org/~laurentlaffont/cogvm/smallharbour.git shvm
cd shvm/codegen-scripts/
export SQUEAKVM=/usr/local/bin/coglinux/squeak
sh ./buildImage.sh -headless
sh ./generate.sh -headless CogUnixConfig
cd ../build/
sh ../codegen-scripts/extract-commit-info.sh
cmake .
make


I have the error:

[ 94%] Built target CogVM
Linking C shared library /root/securedvm/results/vm-display-null
/usr/bin/ld: i386 architecture of input file `CMakeFiles/vm-display-null.dir/root/securedvm/platforms/unix/vm-display-null/sqUnixDisplayNull.c.o' is incompatible with i386:x86-64 output

Any idea ?



Laurent Laffont - @lolgzs

Pharo Smalltalk Screencasts: http://www.pharocasts.com/
Blog: http://magaloma.blogspot.com/




--
Mariano
http://marianopeck.wordpress.com



Reply | Threaded
Open this post in threaded view
|

Re: building Cog on 64 bits debian

Levente Uzonyi-2
In reply to this post by laurent laffont
 
On Sat, 13 Aug 2011, laurent laffont wrote:

(no quotes thx to gmail...)

This issue was discussed several times. The simplest solution is to define
CC as "gcc -m32" (and optionally CXX as "g++ -m32" if you need g++).
Another solution is to check how cmake supports cross compilation. IIRC
autotools has some flags for this.


Levente
Reply | Threaded
Open this post in threaded view
|

Re: building Cog on 64 bits debian

laurent laffont
 
Thanks Levente.

After searching & trying finally I've passed this problem by:
mv /usr/bin/gcc /usr/bin/real.gcc

and then creating /usr/bin/gcc :

#!/bin/sh
exec real.gcc -m32 $@

and chmod +x /usr/bin/gcc


Now I have:

[ 94%] Built target vm-display-null
Scanning dependencies of target vm-display-X11
[ 94%] Building C object vm-display-X11/CMakeFiles/vm-display-X11.dir/root/securedvm/platforms/unix/vm-display-X11/sqUnixX11.c.o
[ 95%] Building C object vm-display-X11/CMakeFiles/vm-display-X11.dir/root/securedvm/platforms/unix/vm-display-X11/sqUnixMozilla.c.o
Linking C shared library /root/securedvm/results/vm-display-X11
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libSM.so when searching for -lSM
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libSM.a when searching for -lSM
/usr/bin/ld: skipping incompatible /usr/lib/libSM.so when searching for -lSM
/usr/bin/ld: skipping incompatible /usr/lib/libSM.a when searching for -lSM
/usr/bin/ld: cannot find -lSM
collect2: ld returned 1 exit status


Laurent 

On Sat, Aug 13, 2011 at 4:36 PM, Levente Uzonyi <[hidden email]> wrote:

On Sat, 13 Aug 2011, laurent laffont wrote:

(no quotes thx to gmail...)

This issue was discussed several times. The simplest solution is to define CC as "gcc -m32" (and optionally CXX as "g++ -m32" if you need g++). Another solution is to check how cmake supports cross compilation. IIRC autotools has some flags for this.


Levente

Reply | Threaded
Open this post in threaded view
|

Re: building Cog on 64 bits debian

laurent laffont
 
So finally I remove from CMakeLists.txt
add_subdirectory("vm-display-X11")
add_subdirectory("vm-sound-ALSA")

and managed to build the VM I want.

But it's an ugly way :(

Laurent

On Sun, Aug 14, 2011 at 5:39 PM, laurent laffont <[hidden email]> wrote:
Thanks Levente.

After searching & trying finally I've passed this problem by:
mv /usr/bin/gcc /usr/bin/real.gcc

and then creating /usr/bin/gcc :

#!/bin/sh
exec real.gcc -m32 $@

and chmod +x /usr/bin/gcc


Now I have:

[ 94%] Built target vm-display-null
Scanning dependencies of target vm-display-X11
[ 94%] Building C object vm-display-X11/CMakeFiles/vm-display-X11.dir/root/securedvm/platforms/unix/vm-display-X11/sqUnixX11.c.o
[ 95%] Building C object vm-display-X11/CMakeFiles/vm-display-X11.dir/root/securedvm/platforms/unix/vm-display-X11/sqUnixMozilla.c.o
Linking C shared library /root/securedvm/results/vm-display-X11
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libSM.so when searching for -lSM
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libSM.a when searching for -lSM
/usr/bin/ld: skipping incompatible /usr/lib/libSM.so when searching for -lSM
/usr/bin/ld: skipping incompatible /usr/lib/libSM.a when searching for -lSM
/usr/bin/ld: cannot find -lSM
collect2: ld returned 1 exit status


Laurent 


On Sat, Aug 13, 2011 at 4:36 PM, Levente Uzonyi <[hidden email]> wrote:

On Sat, 13 Aug 2011, laurent laffont wrote:

(no quotes thx to gmail...)

This issue was discussed several times. The simplest solution is to define CC as "gcc -m32" (and optionally CXX as "g++ -m32" if you need g++). Another solution is to check how cmake supports cross compilation. IIRC autotools has some flags for this.


Levente


Reply | Threaded
Open this post in threaded view
|

Re: building Cog on 64 bits debian

Levente Uzonyi-2
In reply to this post by laurent laffont
 
On Sun, 14 Aug 2011, laurent laffont wrote:

(no quote, gmail, etc...)

All you need is:
export CC="gcc -m32" CXX="g++ -m32"


Levente
Reply | Threaded
Open this post in threaded view
|

Re: building Cog on 64 bits debian

laurent laffont
 
On Sun, Aug 14, 2011 at 6:21 PM, Levente Uzonyi <[hidden email]> wrote:

On Sun, 14 Aug 2011, laurent laffont wrote:

(no quote, gmail, etc...)

All you need is:
export CC="gcc -m32" CXX="g++ -m32"


I tried:

~/securedvm/build# export CC="gcc -m32"
~/securedvm/build# export CXX="g++ -m32"
~/securedvm/build# make
bla bla........
[ 95%] Built target CogVM
Linking C shared library /root/securedvm/results/vm-display-null
collect2: ld terminated with signal 11 [Segmentation fault]
ld: skipping incompatible /usr/lib32/libm.so when searching for -lm
ld: skipping incompatible /usr/lib32/libm.a when searching for -lm
ld: skipping incompatible /usr/lib32/libdl.so when searching for -ldl
ld: skipping incompatible /usr/lib32/libdl.a when searching for -ldl
ld: skipping incompatible /usr/lib32/libpthread.so when searching for -lpthread
ld: skipping incompatible /usr/lib32/libpthread.a when searching for -lpthread
ld: skipping incompatible /usr/lib32/libc.so when searching for -lc
ld: skipping incompatible /usr/lib32/libc.a when searching for -lc
ld: i386 architecture of input file `CMakeFiles/vm-display-null.dir/root/securedvm/platforms/unix/vm-display-null/sqUnixDisplayNull.c.o' is incompatible with i386:x86-64 output


 

Levente

Reply | Threaded
Open this post in threaded view
|

Re: building Cog on 64 bits debian

Levente Uzonyi-2
 
On Sun, 14 Aug 2011, laurent laffont wrote:

Hm, yeah. IIRC autotools used gcc (via libtool) for linking instead of ld.
You'll need another export LDFLAGS="-m32".


Levente
Reply | Threaded
Open this post in threaded view
|

Re: building Cog on 64 bits debian

laurent laffont
 
On Sun, Aug 14, 2011 at 6:37 PM, Levente Uzonyi <[hidden email]> wrote:

On Sun, 14 Aug 2011, laurent laffont wrote:

Hm, yeah. IIRC autotools used gcc (via libtool) for linking instead of ld. You'll need another export LDFLAGS="-m32".

Does not help.

It looks like flags are "discared". For example with the libSM no found for vm-display-X11, I tried

LDFLAGS="-L/usr/lib32" 

as 

# ls  /usr/lib32/*SM*
/usr/lib32/libSM.so.6  /usr/lib32/libSM.so.6.0.1

but still try to link on /usr/lib/libSM.so

Laurent.
 


Levente

Reply | Threaded
Open this post in threaded view
|

Re: building Cog on 64 bits debian

Igor Stasenko
In reply to this post by laurent laffont
 
On 14 August 2011 18:39, laurent laffont <[hidden email]> wrote:

>
> Thanks Levente.
> After searching & trying finally I've passed this problem by:
> mv /usr/bin/gcc /usr/bin/real.gcc
> and then creating /usr/bin/gcc :
> #!/bin/sh
> exec real.gcc -m32 $@
> and chmod +x /usr/bin/gcc
>
> Now I have:
> [ 94%] Built target vm-display-null
> Scanning dependencies of target vm-display-X11
> [ 94%] Building C object vm-display-X11/CMakeFiles/vm-display-X11.dir/root/securedvm/platforms/unix/vm-display-X11/sqUnixX11.c.o
> [ 95%] Building C object vm-display-X11/CMakeFiles/vm-display-X11.dir/root/securedvm/platforms/unix/vm-display-X11/sqUnixMozilla.c.o
> Linking C shared library /root/securedvm/results/vm-display-X11
> /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libSM.so when searching for -lSM
> /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libSM.a when searching for -lSM
> /usr/bin/ld: skipping incompatible /usr/lib/libSM.so when searching for -lSM
> /usr/bin/ld: skipping incompatible /usr/lib/libSM.a when searching for -lSM
> /usr/bin/ld: cannot find -lSM
> collect2: ld returned 1 exit status
>

looks like you don't have 32bit version of this library.
That's why it refusing to link.

As for compiler options, i don't think that you need to use
workarounds (like creating real.gcc etc) , because the -m32 flag is
there:

# This is automatically generated file using CogUnixConfig on 14
August 2011 10:01:34 pm
...
message("Adding module: vm-sound-null")
add_definitions( -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -m32
-g0 -O2 -msse2 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1
        -DNO_VM_PROFILE=1 -DDEBUGVM=0)
...

Try building using:

make VERBOSE=1

to see what flags are passed to compiler.

And please, create a subclass of CogUnixConfig , like
Cog32OnDebian64Config
and play with definitions there.

In image you can do:

Cog32OnDebian64Config generateWithSources
or
Cog32OnDebian64Config generate

the difference that first will generate cmake files + source files,
while second one is only cmake files (takes less than second)

I suspecting that problem with linker flags, which tries to link
32-bit output with 64-bit binary.
It seems that we're missing the flag there that it should use 32-bit
binary for output.

> Laurent
>
> On Sat, Aug 13, 2011 at 4:36 PM, Levente Uzonyi <[hidden email]> wrote:
>>
>> On Sat, 13 Aug 2011, laurent laffont wrote:
>>
>> (no quotes thx to gmail...)
>>
>> This issue was discussed several times. The simplest solution is to define CC as "gcc -m32" (and optionally CXX as "g++ -m32" if you need g++). Another solution is to check how cmake supports cross compilation. IIRC autotools has some flags for this.
>>
>>
>> Levente
>
>
>



--
Best regards,
Igor Stasenko AKA sig.
Reply | Threaded
Open this post in threaded view
|

Re: building Cog on 64 bits debian

laurent laffont
 
Igor,

I have 32bits version of needed libraries - they are installed by package libc6-dev-i386 in /usr/lib32

I've created CogDebian64Config and adjust linkFlags / commonCompilerFlags so I have:

CogDebian64Config new linkFlags
 '-lSM -lICE -ldl -lGL -lpthread -lm -lnsl -lX11 -m32 -L/usr/lib32'

CogDebian64Config new compilerFlags ' -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -m32 -L/usr/lib32 -g0 -O2 -msse2 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 
-DNO_VM_PROFILE=1 -DDEBUGVM=0'


but when I make VERBOSE=1  

Linking C shared library /root/securedvm/results/vm-display-null
cd /root/securedvm/build/vm-display-null && /usr/bin/cmake -E cmake_link_script CMakeFiles/vm-display-null.dir/link.txt --verbose=1
/usr/bin/gcc  -fPIC   -shared -Wl,-soname,vm-display-null -o /root/securedvm/results/vm-display-null CMakeFiles/vm-display-null.dir/root/securedvm/platforms/unix/vm-display-null/sqUnixDisplayNull.c.o -lm -ldl -lpthread 
collect2: ld terminated with signal 11 [Segmentation fault]
/usr/bin/ld: i386 architecture of input file `CMakeFiles/vm-display-null.dir/root/securedvm/platforms/unix/vm-display-null/sqUnixDisplayNull.c.o' is incompatible with i386:x86-64 output


So it seems compilerFlags are not used for building vm-display-null !!! 

Same result if I export CC="gcc -m32"


Flags are used for building CogVM though:

[ 57%] Building C object JPEGReadWriter2Plugin/CMakeFiles/JPEGReadWriter2Plugin.dir/root/securedvm/platforms/Cross/plugins/JPEGReadWriter2Plugin/jquant2.c.o
cd /root/securedvm/build/JPEGReadWriter2Plugin && /usr/bin/gcc  -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DDEBUGVM=0 -DSQUEAK_BUILTIN_PLUGIN -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DDEBUGVM=0 -I/root/securedvm/platforms/unix/plugins/B3DAcceleratorPlugin -I/root/securedvm/platforms/Cross/vm -I/root/securedvm/src/vm -I/root/securedvm/platforms/unix/vm -I/root/securedvm/build -I/root/securedvm/src/plugins/JPEGReadWriter2Plugin -I/root/securedvm/platforms/Cross/plugins/JPEGReadWriter2Plugin -I/root/securedvm/platforms/unix/plugins/JPEGReadWriter2Plugin   -m32 -L/usr/lib32 -g0 -O2 -msse2 -m32 -L/usr/lib32 -g0 -O2 -msse2 -o CMakeFiles/JPEGReadWriter2Plugin.dir/root/securedvm/platforms/Cross/plugins/JPEGReadWriter2Plugin/jquant2.c.o   -c /root/securedvm/platforms/Cross/plugins/JPEGReadWriter2Plugin/jquant2.c


Laurent

On Sun, Aug 14, 2011 at 10:10 PM, Igor Stasenko <[hidden email]> wrote:

On 14 August 2011 18:39, laurent laffont <[hidden email]> wrote:
>
> Thanks Levente.
> After searching & trying finally I've passed this problem by:
> mv /usr/bin/gcc /usr/bin/real.gcc
> and then creating /usr/bin/gcc :
> #!/bin/sh
> exec real.gcc -m32 $@
> and chmod +x /usr/bin/gcc
>
> Now I have:
> [ 94%] Built target vm-display-null
> Scanning dependencies of target vm-display-X11
> [ 94%] Building C object vm-display-X11/CMakeFiles/vm-display-X11.dir/root/securedvm/platforms/unix/vm-display-X11/sqUnixX11.c.o
> [ 95%] Building C object vm-display-X11/CMakeFiles/vm-display-X11.dir/root/securedvm/platforms/unix/vm-display-X11/sqUnixMozilla.c.o
> Linking C shared library /root/securedvm/results/vm-display-X11
> /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libSM.so when searching for -lSM
> /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libSM.a when searching for -lSM
> /usr/bin/ld: skipping incompatible /usr/lib/libSM.so when searching for -lSM
> /usr/bin/ld: skipping incompatible /usr/lib/libSM.a when searching for -lSM
> /usr/bin/ld: cannot find -lSM
> collect2: ld returned 1 exit status
>

looks like you don't have 32bit version of this library.
That's why it refusing to link.

As for compiler options, i don't think that you need to use
workarounds (like creating real.gcc etc) , because the -m32 flag is
there:

# This is automatically generated file using CogUnixConfig on 14
August 2011 10:01:34 pm
...
message("Adding module: vm-sound-null")
add_definitions( -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -m32
-g0 -O2 -msse2 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1
       -DNO_VM_PROFILE=1 -DDEBUGVM=0)
...

Try building using:

make VERBOSE=1

to see what flags are passed to compiler.

And please, create a subclass of CogUnixConfig , like
Cog32OnDebian64Config
and play with definitions there.

In image you can do:

Cog32OnDebian64Config generateWithSources
or
Cog32OnDebian64Config generate

the difference that first will generate cmake files + source files,
while second one is only cmake files (takes less than second)

I suspecting that problem with linker flags, which tries to link
32-bit output with 64-bit binary.
It seems that we're missing the flag there that it should use 32-bit
binary for output.

> Laurent
>
> On Sat, Aug 13, 2011 at 4:36 PM, Levente Uzonyi <[hidden email]> wrote:
>>
>> On Sat, 13 Aug 2011, laurent laffont wrote:
>>
>> (no quotes thx to gmail...)
>>
>> This issue was discussed several times. The simplest solution is to define CC as "gcc -m32" (and optionally CXX as "g++ -m32" if you need g++). Another solution is to check how cmake supports cross compilation. IIRC autotools has some flags for this.
>>
>>
>> Levente
>
>
>



--
Best regards,
Igor Stasenko AKA sig.

Reply | Threaded
Open this post in threaded view
|

Re: building Cog on 64 bits debian

laurent laffont
 
note that:
cat vm-display-null/CMakeFiles/vm-display-null.dir/link.txt

gives
 
/usr/bin/gcc  -fPIC  -shared -Wl,-soname,vm-display-null -o /root/securedvm/results/vm-display-null CMakeFiles/vm-display-null.dir/root/securedvm/platforms/unix/vm-display-null/sqUnixDisplayNull.c.o -lm -ldl -lpthread 

if I edit it and add -m32 -L/usr/lib32

then it works

It seems link.txt is generated by cmake....

Laurent.

On Mon, Aug 15, 2011 at 9:04 AM, laurent laffont <[hidden email]> wrote:
Igor,

I have 32bits version of needed libraries - they are installed by package libc6-dev-i386 in /usr/lib32

I've created CogDebian64Config and adjust linkFlags / commonCompilerFlags so I have:

CogDebian64Config new linkFlags
 '-lSM -lICE -ldl -lGL -lpthread -lm -lnsl -lX11 -m32 -L/usr/lib32'

CogDebian64Config new compilerFlags ' -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -m32 -L/usr/lib32 -g0 -O2 -msse2 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 
-DNO_VM_PROFILE=1 -DDEBUGVM=0'


but when I make VERBOSE=1  

Linking C shared library /root/securedvm/results/vm-display-null
cd /root/securedvm/build/vm-display-null && /usr/bin/cmake -E cmake_link_script CMakeFiles/vm-display-null.dir/link.txt --verbose=1
/usr/bin/gcc  -fPIC   -shared -Wl,-soname,vm-display-null -o /root/securedvm/results/vm-display-null CMakeFiles/vm-display-null.dir/root/securedvm/platforms/unix/vm-display-null/sqUnixDisplayNull.c.o -lm -ldl -lpthread 
collect2: ld terminated with signal 11 [Segmentation fault]
/usr/bin/ld: i386 architecture of input file `CMakeFiles/vm-display-null.dir/root/securedvm/platforms/unix/vm-display-null/sqUnixDisplayNull.c.o' is incompatible with i386:x86-64 output


So it seems compilerFlags are not used for building vm-display-null !!! 

Same result if I export CC="gcc -m32"


Flags are used for building CogVM though:

[ 57%] Building C object JPEGReadWriter2Plugin/CMakeFiles/JPEGReadWriter2Plugin.dir/root/securedvm/platforms/Cross/plugins/JPEGReadWriter2Plugin/jquant2.c.o
cd /root/securedvm/build/JPEGReadWriter2Plugin && /usr/bin/gcc  -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DDEBUGVM=0 -DSQUEAK_BUILTIN_PLUGIN -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DDEBUGVM=0 -I/root/securedvm/platforms/unix/plugins/B3DAcceleratorPlugin -I/root/securedvm/platforms/Cross/vm -I/root/securedvm/src/vm -I/root/securedvm/platforms/unix/vm -I/root/securedvm/build -I/root/securedvm/src/plugins/JPEGReadWriter2Plugin -I/root/securedvm/platforms/Cross/plugins/JPEGReadWriter2Plugin -I/root/securedvm/platforms/unix/plugins/JPEGReadWriter2Plugin   -m32 -L/usr/lib32 -g0 -O2 -msse2 -m32 -L/usr/lib32 -g0 -O2 -msse2 -o CMakeFiles/JPEGReadWriter2Plugin.dir/root/securedvm/platforms/Cross/plugins/JPEGReadWriter2Plugin/jquant2.c.o   -c /root/securedvm/platforms/Cross/plugins/JPEGReadWriter2Plugin/jquant2.c


Laurent

On Sun, Aug 14, 2011 at 10:10 PM, Igor Stasenko <[hidden email]> wrote:

On 14 August 2011 18:39, laurent laffont <[hidden email]> wrote:
>
> Thanks Levente.
> After searching & trying finally I've passed this problem by:
> mv /usr/bin/gcc /usr/bin/real.gcc
> and then creating /usr/bin/gcc :
> #!/bin/sh
> exec real.gcc -m32 $@
> and chmod +x /usr/bin/gcc
>
> Now I have:
> [ 94%] Built target vm-display-null
> Scanning dependencies of target vm-display-X11
> [ 94%] Building C object vm-display-X11/CMakeFiles/vm-display-X11.dir/root/securedvm/platforms/unix/vm-display-X11/sqUnixX11.c.o
> [ 95%] Building C object vm-display-X11/CMakeFiles/vm-display-X11.dir/root/securedvm/platforms/unix/vm-display-X11/sqUnixMozilla.c.o
> Linking C shared library /root/securedvm/results/vm-display-X11
> /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libSM.so when searching for -lSM
> /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libSM.a when searching for -lSM
> /usr/bin/ld: skipping incompatible /usr/lib/libSM.so when searching for -lSM
> /usr/bin/ld: skipping incompatible /usr/lib/libSM.a when searching for -lSM
> /usr/bin/ld: cannot find -lSM
> collect2: ld returned 1 exit status
>

looks like you don't have 32bit version of this library.
That's why it refusing to link.

As for compiler options, i don't think that you need to use
workarounds (like creating real.gcc etc) , because the -m32 flag is
there:

# This is automatically generated file using CogUnixConfig on 14
August 2011 10:01:34 pm
...
message("Adding module: vm-sound-null")
add_definitions( -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -m32
-g0 -O2 -msse2 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1
       -DNO_VM_PROFILE=1 -DDEBUGVM=0)
...

Try building using:

make VERBOSE=1

to see what flags are passed to compiler.

And please, create a subclass of CogUnixConfig , like
Cog32OnDebian64Config
and play with definitions there.

In image you can do:

Cog32OnDebian64Config generateWithSources
or
Cog32OnDebian64Config generate

the difference that first will generate cmake files + source files,
while second one is only cmake files (takes less than second)

I suspecting that problem with linker flags, which tries to link
32-bit output with 64-bit binary.
It seems that we're missing the flag there that it should use 32-bit
binary for output.

> Laurent
>
> On Sat, Aug 13, 2011 at 4:36 PM, Levente Uzonyi <[hidden email]> wrote:
>>
>> On Sat, 13 Aug 2011, laurent laffont wrote:
>>
>> (no quotes thx to gmail...)
>>
>> This issue was discussed several times. The simplest solution is to define CC as "gcc -m32" (and optionally CXX as "g++ -m32" if you need g++). Another solution is to check how cmake supports cross compilation. IIRC autotools has some flags for this.
>>
>>
>> Levente
>
>
>



--
Best regards,
Igor Stasenko AKA sig.


Reply | Threaded
Open this post in threaded view
|

Re: building Cog on 64 bits debian

Mariano Martinez Peck
In reply to this post by laurent laffont
 


On Mon, Aug 15, 2011 at 9:04 AM, laurent laffont <[hidden email]> wrote:
 
Igor,

I have 32bits version of needed libraries - they are installed by package libc6-dev-i386 in /usr/lib32

I've created CogDebian64Config and adjust linkFlags / commonCompilerFlags so I have:

CogDebian64Config new linkFlags
 '-lSM -lICE -ldl -lGL -lpthread -lm -lnsl -lX11 -m32 -L/usr/lib32'

CogDebian64Config new compilerFlags ' -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -m32 -L/usr/lib32 -g0 -O2 -msse2 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 
-DNO_VM_PROFILE=1 -DDEBUGVM=0'


but when I make VERBOSE=1  

Linking C shared library /root/securedvm/results/vm-display-null
cd /root/securedvm/build/vm-display-null && /usr/bin/cmake -E cmake_link_script CMakeFiles/vm-display-null.dir/link.txt --verbose=1
/usr/bin/gcc  -fPIC   -shared -Wl,-soname,vm-display-null -o /root/securedvm/results/vm-display-null CMakeFiles/vm-display-null.dir/root/securedvm/platforms/unix/vm-display-null/sqUnixDisplayNull.c.o -lm -ldl -lpthread 
collect2: ld terminated with signal 11 [Segmentation fault]
/usr/bin/ld: i386 architecture of input file `CMakeFiles/vm-display-null.dir/root/securedvm/platforms/unix/vm-display-null/sqUnixDisplayNull.c.o' is incompatible with i386:x86-64 output


So it seems compilerFlags are not used for building vm-display-null !!! 


Be sure to remove the cache file of cmake. Sometimes it is not removed when in fact it is necessary. So in any test you do you better remove ../biuld/CMakeCache.txt

Anyway, it is weird it is not using #compilerFlags. Becuase: #addVMDrivers:  does

    addDriver: 'vm-display-null'
        sources: #(
            '${targetPlatform}/vm-display-null/sqUnixDisplayNull' )
        generator: maker;
        
        addDriver: 'vm-display-X11'
        sources: #(
            '${targetPlatform}/vm-display-X11/sqUnixX11'
            '${targetPlatform}/vm-display-X11/sqUnixMozilla' )
        generator: maker;


....


And then #addDriver: name sources: aSources generator: cmakeGen
  sends:
...
    addDefinitions:  self compilerFlags;

...LINK_FLAGS "', self linkFlags , '"'





Same result if I export CC="gcc -m32"


Flags are used for building CogVM though:

[ 57%] Building C object JPEGReadWriter2Plugin/CMakeFiles/JPEGReadWriter2Plugin.dir/root/securedvm/platforms/Cross/plugins/JPEGReadWriter2Plugin/jquant2.c.o
cd /root/securedvm/build/JPEGReadWriter2Plugin && /usr/bin/gcc  -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DDEBUGVM=0 -DSQUEAK_BUILTIN_PLUGIN -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DDEBUGVM=0 -I/root/securedvm/platforms/unix/plugins/B3DAcceleratorPlugin -I/root/securedvm/platforms/Cross/vm -I/root/securedvm/src/vm -I/root/securedvm/platforms/unix/vm -I/root/securedvm/build -I/root/securedvm/src/plugins/JPEGReadWriter2Plugin -I/root/securedvm/platforms/Cross/plugins/JPEGReadWriter2Plugin -I/root/securedvm/platforms/unix/plugins/JPEGReadWriter2Plugin   -m32 -L/usr/lib32 -g0 -O2 -msse2 -m32 -L/usr/lib32 -g0 -O2 -msse2 -o CMakeFiles/JPEGReadWriter2Plugin.dir/root/securedvm/platforms/Cross/plugins/JPEGReadWriter2Plugin/jquant2.c.o   -c /root/securedvm/platforms/Cross/plugins/JPEGReadWriter2Plugin/jquant2.c


Laurent

On Sun, Aug 14, 2011 at 10:10 PM, Igor Stasenko <[hidden email]> wrote:

On 14 August 2011 18:39, laurent laffont <[hidden email]> wrote:
>
> Thanks Levente.
> After searching & trying finally I've passed this problem by:
> mv /usr/bin/gcc /usr/bin/real.gcc
> and then creating /usr/bin/gcc :
> #!/bin/sh
> exec real.gcc -m32 $@
> and chmod +x /usr/bin/gcc
>
> Now I have:
> [ 94%] Built target vm-display-null
> Scanning dependencies of target vm-display-X11
> [ 94%] Building C object vm-display-X11/CMakeFiles/vm-display-X11.dir/root/securedvm/platforms/unix/vm-display-X11/sqUnixX11.c.o
> [ 95%] Building C object vm-display-X11/CMakeFiles/vm-display-X11.dir/root/securedvm/platforms/unix/vm-display-X11/sqUnixMozilla.c.o
> Linking C shared library /root/securedvm/results/vm-display-X11
> /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libSM.so when searching for -lSM
> /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libSM.a when searching for -lSM
> /usr/bin/ld: skipping incompatible /usr/lib/libSM.so when searching for -lSM
> /usr/bin/ld: skipping incompatible /usr/lib/libSM.a when searching for -lSM
> /usr/bin/ld: cannot find -lSM
> collect2: ld returned 1 exit status
>

looks like you don't have 32bit version of this library.
That's why it refusing to link.

As for compiler options, i don't think that you need to use
workarounds (like creating real.gcc etc) , because the -m32 flag is
there:

# This is automatically generated file using CogUnixConfig on 14
August 2011 10:01:34 pm
...
message("Adding module: vm-sound-null")
add_definitions( -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -m32
-g0 -O2 -msse2 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1
       -DNO_VM_PROFILE=1 -DDEBUGVM=0)
...

Try building using:

make VERBOSE=1

to see what flags are passed to compiler.

And please, create a subclass of CogUnixConfig , like
Cog32OnDebian64Config
and play with definitions there.

In image you can do:

Cog32OnDebian64Config generateWithSources
or
Cog32OnDebian64Config generate

the difference that first will generate cmake files + source files,
while second one is only cmake files (takes less than second)

I suspecting that problem with linker flags, which tries to link
32-bit output with 64-bit binary.
It seems that we're missing the flag there that it should use 32-bit
binary for output.

> Laurent
>
> On Sat, Aug 13, 2011 at 4:36 PM, Levente Uzonyi <[hidden email]> wrote:
>>
>> On Sat, 13 Aug 2011, laurent laffont wrote:
>>
>> (no quotes thx to gmail...)
>>
>> This issue was discussed several times. The simplest solution is to define CC as "gcc -m32" (and optionally CXX as "g++ -m32" if you need g++). Another solution is to check how cmake supports cross compilation. IIRC autotools has some flags for this.
>>
>>
>> Levente
>
>
>



--
Best regards,
Igor Stasenko AKA sig.





--
Mariano
http://marianopeck.wordpress.com

Reply | Threaded
Open this post in threaded view
|

Re: building Cog on 64 bits debian

laurent laffont
 
If I edit vm-display-null/CMakeLists.txt and change:

set_target_properties(vm-display-null PROPERTIES PREFIX "" SUFFIX "" )

to

set(linkFlags "${linkFlags} -m32")
set_target_properties(vm-display-null PROPERTIES LINK_FLAGS "${linkFlags}" PREFIX "" SUFFIX "" )

then cmake. && make

it works, right flags used.

So it seems that generateWithSources output wrong vm-display-null/CMakeLists.txt

Laurent.


On Mon, Aug 15, 2011 at 9:55 AM, Mariano Martinez Peck <[hidden email]> wrote:
 


On Mon, Aug 15, 2011 at 9:04 AM, laurent laffont <[hidden email]> wrote:
 
Igor,

I have 32bits version of needed libraries - they are installed by package libc6-dev-i386 in /usr/lib32

I've created CogDebian64Config and adjust linkFlags / commonCompilerFlags so I have:

CogDebian64Config new linkFlags
 '-lSM -lICE -ldl -lGL -lpthread -lm -lnsl -lX11 -m32 -L/usr/lib32'

CogDebian64Config new compilerFlags ' -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -m32 -L/usr/lib32 -g0 -O2 -msse2 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 
-DNO_VM_PROFILE=1 -DDEBUGVM=0'


but when I make VERBOSE=1  

Linking C shared library /root/securedvm/results/vm-display-null
cd /root/securedvm/build/vm-display-null && /usr/bin/cmake -E cmake_link_script CMakeFiles/vm-display-null.dir/link.txt --verbose=1
/usr/bin/gcc  -fPIC   -shared -Wl,-soname,vm-display-null -o /root/securedvm/results/vm-display-null CMakeFiles/vm-display-null.dir/root/securedvm/platforms/unix/vm-display-null/sqUnixDisplayNull.c.o -lm -ldl -lpthread 
collect2: ld terminated with signal 11 [Segmentation fault]
/usr/bin/ld: i386 architecture of input file `CMakeFiles/vm-display-null.dir/root/securedvm/platforms/unix/vm-display-null/sqUnixDisplayNull.c.o' is incompatible with i386:x86-64 output


So it seems compilerFlags are not used for building vm-display-null !!! 


Be sure to remove the cache file of cmake. Sometimes it is not removed when in fact it is necessary. So in any test you do you better remove ../biuld/CMakeCache.txt

Anyway, it is weird it is not using #compilerFlags. Becuase: #addVMDrivers:  does

    addDriver: 'vm-display-null'
        sources: #(
            '${targetPlatform}/vm-display-null/sqUnixDisplayNull' )
        generator: maker;
        
        addDriver: 'vm-display-X11'
        sources: #(
            '${targetPlatform}/vm-display-X11/sqUnixX11'
            '${targetPlatform}/vm-display-X11/sqUnixMozilla' )
        generator: maker;


....


And then #addDriver: name sources: aSources generator: cmakeGen
  sends:
...
    addDefinitions:  self compilerFlags;

...LINK_FLAGS "', self linkFlags , '"'





Same result if I export CC="gcc -m32"


Flags are used for building CogVM though:

[ 57%] Building C object JPEGReadWriter2Plugin/CMakeFiles/JPEGReadWriter2Plugin.dir/root/securedvm/platforms/Cross/plugins/JPEGReadWriter2Plugin/jquant2.c.o
cd /root/securedvm/build/JPEGReadWriter2Plugin && /usr/bin/gcc  -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DDEBUGVM=0 -DSQUEAK_BUILTIN_PLUGIN -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DDEBUGVM=0 -I/root/securedvm/platforms/unix/plugins/B3DAcceleratorPlugin -I/root/securedvm/platforms/Cross/vm -I/root/securedvm/src/vm -I/root/securedvm/platforms/unix/vm -I/root/securedvm/build -I/root/securedvm/src/plugins/JPEGReadWriter2Plugin -I/root/securedvm/platforms/Cross/plugins/JPEGReadWriter2Plugin -I/root/securedvm/platforms/unix/plugins/JPEGReadWriter2Plugin   -m32 -L/usr/lib32 -g0 -O2 -msse2 -m32 -L/usr/lib32 -g0 -O2 -msse2 -o CMakeFiles/JPEGReadWriter2Plugin.dir/root/securedvm/platforms/Cross/plugins/JPEGReadWriter2Plugin/jquant2.c.o   -c /root/securedvm/platforms/Cross/plugins/JPEGReadWriter2Plugin/jquant2.c


Laurent

On Sun, Aug 14, 2011 at 10:10 PM, Igor Stasenko <[hidden email]> wrote:

On 14 August 2011 18:39, laurent laffont <[hidden email]> wrote:
>
> Thanks Levente.
> After searching & trying finally I've passed this problem by:
> mv /usr/bin/gcc /usr/bin/real.gcc
> and then creating /usr/bin/gcc :
> #!/bin/sh
> exec real.gcc -m32 $@
> and chmod +x /usr/bin/gcc
>
> Now I have:
> [ 94%] Built target vm-display-null
> Scanning dependencies of target vm-display-X11
> [ 94%] Building C object vm-display-X11/CMakeFiles/vm-display-X11.dir/root/securedvm/platforms/unix/vm-display-X11/sqUnixX11.c.o
> [ 95%] Building C object vm-display-X11/CMakeFiles/vm-display-X11.dir/root/securedvm/platforms/unix/vm-display-X11/sqUnixMozilla.c.o
> Linking C shared library /root/securedvm/results/vm-display-X11
> /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libSM.so when searching for -lSM
> /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libSM.a when searching for -lSM
> /usr/bin/ld: skipping incompatible /usr/lib/libSM.so when searching for -lSM
> /usr/bin/ld: skipping incompatible /usr/lib/libSM.a when searching for -lSM
> /usr/bin/ld: cannot find -lSM
> collect2: ld returned 1 exit status
>

looks like you don't have 32bit version of this library.
That's why it refusing to link.

As for compiler options, i don't think that you need to use
workarounds (like creating real.gcc etc) , because the -m32 flag is
there:

# This is automatically generated file using CogUnixConfig on 14
August 2011 10:01:34 pm
...
message("Adding module: vm-sound-null")
add_definitions( -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -m32
-g0 -O2 -msse2 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1
       -DNO_VM_PROFILE=1 -DDEBUGVM=0)
...

Try building using:

make VERBOSE=1

to see what flags are passed to compiler.

And please, create a subclass of CogUnixConfig , like
Cog32OnDebian64Config
and play with definitions there.

In image you can do:

Cog32OnDebian64Config generateWithSources
or
Cog32OnDebian64Config generate

the difference that first will generate cmake files + source files,
while second one is only cmake files (takes less than second)

I suspecting that problem with linker flags, which tries to link
32-bit output with 64-bit binary.
It seems that we're missing the flag there that it should use 32-bit
binary for output.

> Laurent
>
> On Sat, Aug 13, 2011 at 4:36 PM, Levente Uzonyi <[hidden email]> wrote:
>>
>> On Sat, 13 Aug 2011, laurent laffont wrote:
>>
>> (no quotes thx to gmail...)
>>
>> This issue was discussed several times. The simplest solution is to define CC as "gcc -m32" (and optionally CXX as "g++ -m32" if you need g++). Another solution is to check how cmake supports cross compilation. IIRC autotools has some flags for this.
>>
>>
>> Levente
>
>
>



--
Best regards,
Igor Stasenko AKA sig.





--
Mariano
http://marianopeck.wordpress.com



Reply | Threaded
Open this post in threaded view
|

Re: building Cog on 64 bits debian

Igor Stasenko
 
On 15 August 2011 11:34, laurent laffont <[hidden email]> wrote:

>
> If I edit vm-display-null/CMakeLists.txt and change:
> set_target_properties(vm-display-null PROPERTIES PREFIX "" SUFFIX "" )
> to
> set(linkFlags "${linkFlags} -m32")
> set_target_properties(vm-display-null PROPERTIES LINK_FLAGS "${linkFlags}" PREFIX "" SUFFIX "" )
> then cmake. && make
> it works, right flags used.
> So it seems that generateWithSources output wrong vm-display-null/CMakeLists.txt
> Laurent.
>
Yes. Try out CMakeVMMaker-IgorStasenko.134

And thanks for being persistent! :)

--
Best regards,
Igor Stasenko AKA sig.
Reply | Threaded
Open this post in threaded view
|

Re: building Cog on 64 bits debian

laurent laffont
 
On Mon, Aug 15, 2011 at 10:37 AM, Igor Stasenko <[hidden email]> wrote:

On 15 August 2011 11:34, laurent laffont <[hidden email]> wrote:
>
> If I edit vm-display-null/CMakeLists.txt and change:
> set_target_properties(vm-display-null PROPERTIES PREFIX "" SUFFIX "" )
> to
> set(linkFlags "${linkFlags} -m32")
> set_target_properties(vm-display-null PROPERTIES LINK_FLAGS "${linkFlags}" PREFIX "" SUFFIX "" )
> then cmake. && make
> it works, right flags used.
> So it seems that generateWithSources output wrong vm-display-null/CMakeLists.txt
> Laurent.
>
Yes. Try out CMakeVMMaker-IgorStasenko.134

And thanks for being persistent! :)

Cool ! I'll try later. Indeed, I've again learned :)   Seriously, build process is far nicer now than it was one year ago.

Laurent. 

 

--
Best regards,
Igor Stasenko AKA sig.

Reply | Threaded
Open this post in threaded view
|

Re: building Cog on 64 bits debian

Igor Stasenko

this stuff requires a bit of refactoring.
it is a bit messy, that #linkFlags contain libs rather than flags.
the libs should be added separately

On 15 August 2011 11:41, laurent laffont <[hidden email]> wrote:

>
> On Mon, Aug 15, 2011 at 10:37 AM, Igor Stasenko <[hidden email]> wrote:
>>
>> On 15 August 2011 11:34, laurent laffont <[hidden email]> wrote:
>> >
>> > If I edit vm-display-null/CMakeLists.txt and change:
>> > set_target_properties(vm-display-null PROPERTIES PREFIX "" SUFFIX "" )
>> > to
>> > set(linkFlags "${linkFlags} -m32")
>> > set_target_properties(vm-display-null PROPERTIES LINK_FLAGS "${linkFlags}" PREFIX "" SUFFIX "" )
>> > then cmake. && make
>> > it works, right flags used.
>> > So it seems that generateWithSources output wrong vm-display-null/CMakeLists.txt
>> > Laurent.
>> >
>> Yes. Try out CMakeVMMaker-IgorStasenko.134
>>
>> And thanks for being persistent! :)
>
> Cool ! I'll try later. Indeed, I've again learned :)   Seriously, build process is far nicer now than it was one year ago.
> Laurent.
>
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>
>
>



--
Best regards,
Igor Stasenko AKA sig.
Reply | Threaded
Open this post in threaded view
|

Re: building Cog on 64 bits debian

Mariano Martinez Peck
 


On Mon, Aug 15, 2011 at 12:12 PM, Igor Stasenko <[hidden email]> wrote:

this stuff requires a bit of refactoring.
it is a bit messy, that #linkFlags contain libs rather than flags.
the libs should be added separately

yes. Maybe we can find a general name for them, for example, #linkParameters  which inside does self linkParameters, self linkLibraries
or something like that.
 

On 15 August 2011 11:41, laurent laffont <[hidden email]> wrote:
>
> On Mon, Aug 15, 2011 at 10:37 AM, Igor Stasenko <[hidden email]> wrote:
>>
>> On 15 August 2011 11:34, laurent laffont <[hidden email]> wrote:
>> >
>> > If I edit vm-display-null/CMakeLists.txt and change:
>> > set_target_properties(vm-display-null PROPERTIES PREFIX "" SUFFIX "" )
>> > to
>> > set(linkFlags "${linkFlags} -m32")
>> > set_target_properties(vm-display-null PROPERTIES LINK_FLAGS "${linkFlags}" PREFIX "" SUFFIX "" )
>> > then cmake. && make
>> > it works, right flags used.
>> > So it seems that generateWithSources output wrong vm-display-null/CMakeLists.txt
>> > Laurent.
>> >
>> Yes. Try out CMakeVMMaker-IgorStasenko.134
>>
>> And thanks for being persistent! :)
>
> Cool ! I'll try later. Indeed, I've again learned :)   Seriously, build process is far nicer now than it was one year ago.
> Laurent.
>
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>
>
>



--
Best regards,
Igor Stasenko AKA sig.



--
Mariano
http://marianopeck.wordpress.com

Reply | Threaded
Open this post in threaded view
|

Re: building Cog on 64 bits debian

laurent laffont
In reply to this post by Igor Stasenko
 
Hi Igor,

now it works well. I've created CogOnDebian64Config but I cannot commit to VMMaker repository. So you can get it on:

Gofer it 
  squeaksource: 'LaurentLSandbox';
  version: 'CMakeVMMaker-LaurentLaffont.135';
  load

In CogOnDebian64Config comment:

Used to build 32 bit Cog on Debian 64 bits.

You need to prepare Debian this way:

apt-get install ia32-libs libc6-dev-i386 gcc-multilib g++-multilib

ln -s /usr/lib32/libSM.so.6 /usr/lib32/libSM.so
ln -s /usr/lib32/libICE.so.6 /usr/lib32/libICE.so
ln -s /usr/lib32/libGL.so.1 /usr/lib32/libGL.so
ln -s /usr/lib32/libX11.so.6 /usr/lib32/libX11.so

Then you can go on CogOnDebian64Config generateWithSources.


Laurent.


On Mon, Aug 15, 2011 at 10:37 AM, Igor Stasenko <[hidden email]> wrote:

On 15 August 2011 11:34, laurent laffont <[hidden email]> wrote:
>
> If I edit vm-display-null/CMakeLists.txt and change:
> set_target_properties(vm-display-null PROPERTIES PREFIX "" SUFFIX "" )
> to
> set(linkFlags "${linkFlags} -m32")
> set_target_properties(vm-display-null PROPERTIES LINK_FLAGS "${linkFlags}" PREFIX "" SUFFIX "" )
> then cmake. && make
> it works, right flags used.
> So it seems that generateWithSources output wrong vm-display-null/CMakeLists.txt
> Laurent.
>
Yes. Try out CMakeVMMaker-IgorStasenko.134

And thanks for being persistent! :)

--
Best regards,
Igor Stasenko AKA sig.

12