Building Haiku GCC Hybrid in Fedora 15 x86_64
I get an error when I jam Haiku. Apparently I am missing a file: libroot.so. It apparently isn't being created, but I do not know why.
My process is as follows:
Acquired Source (Haiku and buildtools):
svn checkout http://svn.haiku-os.org/haiku/buildtools/trunk haiku/buildtools svn checkout http://svn.haiku-os.org/haiku/haiku/trunk haiku/haiku
Installed software required for build:
sudo yum install subversion yasm autoconf automake texinfo flex bison gawk build-essential unzip wget zip glibc-devel sudo yum groupinstall "Development Tools" "Development Libraries"
Unable to find direct Fedora-equivalents for these Ubuntu pkgs necessary for build from within 64-bit:
gcc-multilib g++-multilib
Assuming that these are included in "Development Libraries" ...
I am confident that Jam is installed correctly. Built Jam from Haiku Jam source, as described here [https://www.haiku-os.org/guides/building/jam#build_jam]
Running jam -v returns:
Jam 2.5-haiku-20090626. OS=LINUX. Copyright 1993-2002 Christopher Seiwald.
Configuration steps:
cd $HAIKU_HEAD/haiku mkdir generated.x86gcc2 mkdir generated.x86gcc4 cd generated.x86gcc2 linux32 ../configure --alternative-gcc-output-dir ../generated.x86gcc4 --build-cross-tools ../../buildtools/ --use-gcc-pipe
System returns:
binutils and gcc for cross compilation have been built successfully!
Continuing the Hybrid configuration:
cd ../generated.x86gcc4 linux32 ../configure --alternative-gcc-output-dir ../generated.x86gcc2 --build-cross-tools-gcc4 x86 ../../buildtools/ --use-gcc-pipe
System returns:
binutils and gcc for cross compilation have been built successfully!
Now it's time to jam: gcc2/gcc4-secondary Hybrid
cd ../generated.x86gcc2 jam -q @nightly-raw
Oh no! it doesn't work:
Building Haiku Nightly ...patience... ...patience... ...patience... ...patience... ...patience... ...patience... ...patience... ...patience... ...patience... ...patience... ...patience... ...found 101152 target(s)... ...updating 13131 target(s)... InitScript1 /home/aspirin/svn/haiku/haiku/generated.x86gcc2/haiku.image-init-vars MkDir1 /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects MkDir1 /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux MkDir1 /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/lib MkDir1 /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86 MkDir1 /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release MkDir1 /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build MkDir1 /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/atomic.o C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/byteorder.o C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/errors.o C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/fs.o C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/fs_attr.o In file included from /home/aspirin/svn/haiku/haiku/src/build/libroot/fs_attr.cpp:4:0: /home/aspirin/svn/haiku/haiku/src/build/libroot/fs_attr_generic.cpp: In function ‘std::string get_attribute_dir_path(BPrivate::NodeRef)’: /home/aspirin/svn/haiku/haiku/src/build/libroot/fs_attr_generic.cpp:116:42: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 3 has type ‘int64’ [-Wformat] /home/aspirin/svn/haiku/haiku/src/build/libroot/fs_attr_generic.cpp: In function ‘status_t ensure_attribute_dir_exists(BPrivate::NodeRef, const char*, int)’: /home/aspirin/svn/haiku/haiku/src/build/libroot/fs_attr_generic.cpp:138:13: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 3 has type ‘ino_t’ [-Wformat] C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/fs_descriptors.o C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/misc.o C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/sem.o C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/thread.o Cc /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/strlcpy.o /home/aspirin/svn/haiku/haiku/src/system/libroot/posix/string/strlcpy.c:11:1: warning: no previous prototype for ‘strlcpy’ [-Wmissing-prototypes] Cc /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/strlcat.o /home/aspirin/svn/haiku/haiku/src/system/libroot/posix/string/strlcat.c:19:1: warning: no previous prototype for ‘strlcat’ [-Wmissing-prototypes] Cc /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/strnlen.o C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/KMessage.o Link /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/lib/libroot_build.so /usr/bin/ld: cannot find -lsupc++ collect2: ld returned 1 exit status export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/lib ; /home/aspirin/svn/haiku/haiku/build/scripts/rm_attrs /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/tools/rm_attrs -f "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/lib/libroot_build.so" cc -shared -Xlinker -soname="libroot_build.so" -o "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/lib/libroot_build.so" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/atomic.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/byteorder.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/errors.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/fs.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/fs_attr.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/fs_descriptors.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/misc.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/sem.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/thread.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/strlcpy.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/strlcat.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/strnlen.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/KMessage.o" \ -lsupc++ -lstdc++ \ ...failed Link /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/lib/libroot_build.so ... BUILD FAILURE: ...failed updating 1 target(s)... ...skipped 3 target(s)... ...updated 21 target(s)...
Sure enough, when I navigate to generated.x86gcc2/objects/linux/lib/, there's nothing there. Any pointers?

Comments
Re: Building Haiku GCC Hybrid in Fedora 15 x86_64
Your cross tools and bintools seem good. I saw no issue with them.
Remove the objects folder you just compiled and try with:
linux32 jam -q @nightly-raw
I think Fedora already includes the 32 bit libraries. Either that or maybe you have to do something hard to get and install them.
Re: Building Haiku GCC Hybrid in Fedora 15 x86_64
Thanks, tonestone57. I am going to give that a try tonight; I ran the
linux32 jam -q @nightly-rawcommand, actually, and it still failed, but I did not think to rm the objects folder beforehand. I will let you know how that turns out.Re: Building Haiku GCC Hybrid in Fedora 15 x86_64
Your cross tools and bintools seem good. I saw no issue with them.
Remove the objects folder you just compiled and try with:
linux32 jam -q @nightly-raw
I think Fedora already includes the 32 bit libraries. Either that or maybe you have to do something hard to get and install them.
I ran this last night. It failed, still, citing missing
-lsupc++and-lstdc++as the reason. I have checked, both libsupc++.i686 and libstdc++.i686 are present in the system.I am going to try building in a Debian environment.
[SOLVED, sort-of]: Building Haiku GCC Hybrid in Fedora 15 x86_64
[SOLVED] (sort-of)
For future reference, so no one has to go through the same headaches:
The final word is that Fedora DOES NOT provide 32-bit c/c++ build libraries in 64-bit Fedora. Additionally, trying to force-install the 32-bit libraries, if it actually works, can cause your system to malfunction in interesting ways; it is not recommended. Therefore, you must be running 32-bit Fedora to build Haiku. The "Installed Software Required for Build" section above should encompass all the requirements for building Haiku in 32-bit Fedora.
My solution was to use a Debian-based environment (Ubuntu) to build Haiku. Outside of PEBKAC, the build process worked without any issue.