NickThePowerful / iphone-dev

Automatically exported from code.google.com/p/iphone-dev
0 stars 0 forks source link

Can't build toolchain on Linux (Ubuntu feisty 64-bit) #14

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Running 'make' inside of the odcctools dir fails
2. Apparently some of the members of several structs don't exist if __LP64__ is 
defined
3. ???

What is the expected output? What do you see instead?
I expect a working toolchain, of course.... I get compiler errors because 
__LP64__ is defined on my 
system (since I'm on a 64-bit Linux system).

What version of the product are you using? On what operating system?
Latest trunk of iphone-dev, r136, on 64-bit Ubuntu Feisty 7.04

Original issue reported on code.google.com by chris...@gmail.com on 12 Sep 2007 at 11:01

GoogleCodeExporter commented 9 years ago
I've heard of this from several people. One said that they would get me a 
patch. As I don't have a 64-bit system, 
I'll have to wait on that.

Original comment by nightwat...@gmail.com on 12 Sep 2007 at 3:20

GoogleCodeExporter commented 9 years ago

Original comment by nightwat...@gmail.com on 12 Sep 2007 at 3:20

GoogleCodeExporter commented 9 years ago

Original comment by nightwat...@gmail.com on 12 Sep 2007 at 10:54

GoogleCodeExporter commented 9 years ago

Original comment by nightwat...@gmail.com on 15 Sep 2007 at 2:49

GoogleCodeExporter commented 9 years ago
64bit People!
If your GCC supports the -m32 flag just compile odcctools with it (add to CFLAGS
environment variable) and it will work flawlessly.

Thanks for the great toolchain.

Original comment by avne...@gmail.com on 16 Sep 2007 at 12:08

GoogleCodeExporter commented 9 years ago
64bit People!

The above comment helped my compile, but it still gacked and died until I also 
added
-m32 to the LDFLAGS env var.

export CFLAGS="-m32"
export LDFLAGS="-m32"

The compile finished without complaint -- still seeing whether it's actually 
going to
work, ymmv.

Thanks avnerus for the push in the right direction.

Original comment by emerg...@hayseed.net on 17 Sep 2007 at 5:16

GoogleCodeExporter commented 9 years ago
Thanks, emersonrp. I've added a note in the [[Portability]] section of the wiki.

Original comment by nightwat...@gmail.com on 19 Sep 2007 at 10:36

GoogleCodeExporter commented 9 years ago
I've made some changes to odcctools to get it building on 64bit, but the 
resulting
binaries aren't working properly (I tested the arm nm against the binary libs 
of csu
and it can't read symbols.)  So, more work to do...

Original comment by co...@compuserve.com on 27 Sep 2007 at 1:39

GoogleCodeExporter commented 9 years ago
I'm on Ubuntu Gutsy x86_64, and the -m32 stuff doesn't help.  I get the error 
message:

checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for gcc... gcc
checking for C compiler default output file name... configure: error: C compiler
cannot create executables
See `config.log' for more details.

Original comment by digitall...@gmail.com on 20 Jan 2008 at 11:27

Attachments:

GoogleCodeExporter commented 9 years ago
So you guys didn't tell me of all the stuff I'd need to get:

-- subversion
-- csh
-- libc6-dev
-- flex
-- m4
-- bison
-- pax
-- g++
-- patch

Original comment by digitall...@gmail.com on 21 Jan 2008 at 12:22

GoogleCodeExporter commented 9 years ago
On my ubuntu amd64 system I do:
export CFLAGS="-m32"
export LDFLAGS="-m32"
./configure --target=arm-apple-darwin --disable-ld64
and get:
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... arm-apple-darwin
checking for gcc... gcc
checking for C compiler default output file name... configure: error: C compiler
cannot create executables

any ideas?

Original comment by justin.w...@gmail.com on 23 Feb 2008 at 2:24

GoogleCodeExporter commented 9 years ago
sudo apt-get install gcc-multilib fixed that, now onto make giving me:

collect2: ld terminated with signal 11 [Segmentation fault], core dumped
/usr/bin/ld: i386:x86-64 architecture of input file `append.o' is incompatible 
with
i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `ar.o' is incompatible with 
i386
output
/usr/bin/ld: i386:x86-64 architecture of input file `archive.o' is incompatible 
with
i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `contents.o' is 
incompatible with
i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `delete.o' is incompatible 
with
i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `extract.o' is incompatible 
with
i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `misc.o' is incompatible 
with
i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `move.o' is incompatible 
with
i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `print.o' is incompatible 
with
i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `replace.o' is incompatible 
with
i386 output
make[1]: *** [ar] Error 1
make: *** [ar] Error 2

Original comment by justin.w...@gmail.com on 23 Feb 2008 at 2:57

GoogleCodeExporter commented 9 years ago
>checking for C compiler default output file name... configure: error: C 
compiler
>cannot create executables

I had exactly the same problem. I have installed 32 bit gcc and make; make 
install finished just fine 
after that.

Original comment by bender...@gmail.com on 27 Feb 2008 at 8:20

GoogleCodeExporter commented 9 years ago
when I find the 32 bit gcc and make?
thank you

Original comment by marcello...@gmail.com on 12 May 2008 at 11:51

GoogleCodeExporter commented 9 years ago
The 32-bit gcc can be obtained by installing gcc-multilib.  I had to install
gcc-4.2-multilib because gcc-4.3 was giving me errors.  However, it's the 
multilib
package that provides the necessary compiler.

After installing that, you should be able to set the CFLAGS and the LDFLAGS to 
"-m32"
and compile properly.  I have yet to see if the toolchain works, but the 
compilation
completed successfully.

Original comment by avikstra...@gmail.com on 19 Jan 2009 at 10:24

GoogleCodeExporter commented 9 years ago

Ubuntu 8.04 64-bit

with :

export CFLAGS="-m32"
export LDFLAGS="-m32"

../../../odcctools/ar/archive.c: In function ‘open_archive’:
../../../odcctools/ar/archive.c:122: warning: implicit declaration of function 
‘flock’
At top level:
cc1: error: unrecognized command line option "-Wno-long-double"
make[1]: *** [archive.o] Error 1

Original comment by unleaded...@gmail.com on 24 Feb 2009 at 4:08

GoogleCodeExporter commented 9 years ago
OK so I get 
At global scope:
cc1plus: warning: unrecognized command line option "-Wno-long-double"
make[1]: *** [ld.o] Error 1
make[1]: Leaving directory `/root/iphone-dev/build/odcctools/ld64'
make: *** [ld64] Error 2

When compiling with --enable-ld64, I'm running 32bit ubuntu 9.04, but I 
understand
doing that is a requirement to get the toolchain working for 3.0?

Anyways, when I do --disbable-ld64, make runs just fine.

Original comment by gabrioba...@gmail.com on 28 Aug 2009 at 2:58

GoogleCodeExporter commented 9 years ago
At global scope:
cc1plus: warning: unrecognized command line option "-Wno-long-double"
make[1]: *** [ld.o] Error 1
make[1]: Leaving directory `/root/iphone-dev/build/odcctools/ld64'
make: *** [ld64] Error 2

(Same Comment 17)

The solution offered in Comment 15  by avikstrange, Jan 19, 2009 worked for me.
* Linux version 2.2.26-2-686 (Debian 2.6.26-17)
* (gcc version 4.1.3 20080704 (prerelease) (Debian 4.1.2-25))

I initially "installed" gcc 4.2 by simply running "apt-get install gcc-4.2". 
However,
when you run "gcc --version" in the command-line, it still prints version 4.3, 
to
"fix" this I did:

#Double check you have gcc 4.2, you should see "gcc-4.2" executable
ls -al /usr/bin|grep gcc

#Remove existing symbolic link to gcc 4.3
rm /usr/bin/gcc

#Link to 4.2
ln -s /usr/bin/gcc-4.2 /usr/bin/gcc

#Verify this worked
gcc --version

Should now print out something like "gcc (GCC) 4.24 (Debian 4.2.4-6)"

At this stage I had already exported LDFLAGS and CLFAGS manually so I don't 
know if
this helped; I also used configure with --disable-ld64. After performing this 
make
worked fine.

Hope this helps...

Original comment by avital.p...@gmail.com on 16 Sep 2009 at 9:31

GoogleCodeExporter commented 9 years ago
I had to do the last comment but also do it with apt-get install g++-4.2 and ln 
-s
/usr/bin/g++-4.2 /usr/bin/g++ after getting a g++ command not found.

Original comment by redpengu...@gmail.com on 7 Nov 2009 at 10:51

GoogleCodeExporter commented 9 years ago
hi, see issue 221

There were 2 "big" bugs in the odcctools which caused the trouble with native 
64bit:

1. in include/foreign/machine/vm_types.h: the vm_address_t was forced to 32bit, 
but its used for storing memory addressing (->> CRASH)
2. in libmacho/arch.c: in the NXGetArchInfoFromCpuType you returned a non 
static pointer on a static table - the driverdriver tried to change the table 
(->> CRASH)

Original comment by florian...@googlemail.com on 7 Apr 2011 at 2:26

GoogleCodeExporter commented 9 years ago
oh it's issue 212 ;) sorry

Original comment by florian...@googlemail.com on 7 Apr 2011 at 2:26

GoogleCodeExporter commented 9 years ago
A positive feedback.

First making odcctools failed with conflicting types. I added CFLAGS=-m32 
LDFLAGS=-m32 option in configure. Then configure complains "configure: error: C 
compiler cannot create executables". After I installed 32bit version of libgcc, 
odcctools compiles successfully (with some warnings still).

Original comment by wuyongzh...@gmail.com on 30 Apr 2011 at 8:13

GoogleCodeExporter commented 9 years ago
see issue 212 - i've fixed the problems in the toolchain. With my patches, the 
toolchain is fully 64bit compatible and there's no need for the m32-flags / 
multilib-gcc anymore

Original comment by florian...@googlemail.com on 16 Jun 2011 at 9:29

GoogleCodeExporter commented 9 years ago
Here is a patch set for building on linux with gcc and glibc.  I am not sure 
how many of these patches will work on different linux distros but on gentoo it 
solved all of the compile errors and explicit declarations as well as a ton of 
warnings due to the objc++ garbage sprinkled about.  I have not tired building 
with otool or an objc enabled compiler.  Hopefully someone finds some of these 
useful and incorporates them into the repository.

These have only been tested on x86_64 and you do not need to pass in -m32.  I 
compiled with the following:

./configure --prefix=/usr --build=x86_64-pc-linux-gnu 
--host=x86_64-pc-linux-gnu --target=i586-apple-darwin10 --mandir=/usr/share/man 
--infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc 
--localstatedir=/var/lib --libdir=/usr/lib 
--with-sysroot=/usr/i586-apple-darwin10 --enable-ld64

make && make install

Original comment by heispsyc...@gmail.com on 9 Jul 2011 at 2:02

Attachments: