Hi Genode Comunity
I need porting a Qt4.8 application on GenodeOS. I'm using the old qt4 support on GenodeOS, and it's working fine with the examples. Now, my applications have another dependencies like WebToolkit (Wt) library. I'm working on the support of this library. I have followed the Porting Guide and have made some progress. Basically I have made a basic support of some Boost libraries needed to compile Wt: system, signals, random, date_time, regex and thread. These libraries compile fine on GenodeOS. I have tried to bring up the Wt library. To do this, i have reviewed the build log of the library. Using this build log I have prepares the build files for the library and make a dummy example (for test the compilation of the library) using one of the examples on repos/libports/src/test/libports/ Checking the dependencies of the compiled library on my pc I've got
readelf -a libwt.so | grep NEEDED 0x0000000000000001 (NEEDED) Shared library: [libboost_thread.so.1.55.0] 0x0000000000000001 (NEEDED) Shared library: [libboost_random.so.1.55.0] 0x0000000000000001 (NEEDED) Shared library: [libboost_regex.so.1.55.0] 0x0000000000000001 (NEEDED) Shared library: [libboost_signals.so.1.55.0] 0x0000000000000001 (NEEDED) Shared library: [libboost_system.so.1.55.0] 0x0000000000000001 (NEEDED) Shared library: [libboost_filesystem.so.1.55.0] 0x0000000000000001 (NEEDED) Shared library: [libboost_date_time.so.1.55.0] 0x0000000000000001 (NEEDED) Shared library: [librt.so.1] 0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0] 0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6] 0x0000000000000001 (NEEDED) Shared library: [libm.so.6] 0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1] 0x0000000000000001 (NEEDED) Shared library: [libc.so.6] 0x0000000000000001 (NEEDED) Shared library: [ld-linux-x86-64.so.2]
Based on it, i have set the dependencies to compile the Wt library on GenodeOS:
LIBS += libc libc-stdlib libm cxx stdcxx pthread boost_system boost_date_time boost_random boost_signals boost_filesystem boost_thread boost_regex
At this point the source code of the library compiles fine, but when to try to link the dummy application with the compiled library get this error:
Program test/libports/wt/test-webtoolkit LINK test-webtoolkit /home/millo/XEOS/GenodeOS/build/foc_rpi/var/libcache/wt/wt.lib.so: undefined reference to `kevent' /home/millo/XEOS/GenodeOS/build/foc_rpi/var/libcache/wt/wt.lib.so: undefined reference to `sigwait' /home/millo/XEOS/GenodeOS/build/foc_rpi/var/libcache/wt/wt.lib.so: undefined reference to `kqueue' /home/millo/XEOS/GenodeOS/build/foc_rpi/var/libcache/wt/wt.lib.so: undefined reference to `sendmsg' collect2: error: ld returned 1 exit status
Some body have any suggestion or any idea about this? I'm missign some library dependencie?
Best regards
Hallo Reinier,
* Reinier Millo Sánchez <rmillo@...210...> [2015-11-10 15:14:24 -0500]:
Based on it, i have set the dependencies to compile the Wt library on GenodeOS:
LIBS += libc libc-stdlib libm cxx stdcxx pthread boost_system boost_date_time boost_random boost_signals boost_filesystem boost_thread boost_regex
At this point the source code of the library compiles fine, but when to try to link the dummy application with the compiled library get this error:
Program test/libports/wt/test-webtoolkit LINK test-webtoolkit /home/millo/XEOS/GenodeOS/build/foc_rpi/var/libcache/wt/wt.lib.so: undefined reference to `kevent' /home/millo/XEOS/GenodeOS/build/foc_rpi/var/libcache/wt/wt.lib.so: undefined reference to `sigwait' /home/millo/XEOS/GenodeOS/build/foc_rpi/var/libcache/wt/wt.lib.so: undefined reference to `kqueue' /home/millo/XEOS/GenodeOS/build/foc_rpi/var/libcache/wt/wt.lib.so: undefined reference to `sendmsg' collect2: error: ld returned 1 exit status
Our libc does not provide implementations for the mentioned functions as was already discussed in [1]. Since the libc is based on the one from FreeBSD boost probably wants to use its FreeBSD backend, hence the calls to 'kqueue' and 'kevent' etc. On way to solve your probleme would be to force the usage of the generic backend in boost that hopefully only uses functions which are already implemented.
Regards Josef