Hi, I am currently working on a new L4Ka::Pistachio-based operating system project, and am contemplating integrating Genode components. Sadly, in the process of integrating Genode into the build system, I've noticed that the linking stage fails towards the end of building core with the following: /usr/bin/ld: cannot find -ll4 collect2: ld returned 1 exit status make[2]: *** [/home/tyson/i9os/Personalities/GenodeKit/build.pistachio_x86/core/x86/core] Error 1 make[1]: *** [single_target] Error 2 make: *** [.] Error 2
I had to copy the L4 header files into /base-pistachio/include/, despite also having them in a location specified in build.pistachio_x86/etc/pistachio.conf. Even after running "make install" to copy the L4 userland libraries and header files to /usr/local, I'm stumped.
Thanks in advance, Tyson.
Hi Tyson,
Tyson Key wrote:
Hi, I am currently working on a new L4Ka::Pistachio-based operating system project, and am contemplating integrating Genode components. Sadly, in the process of integrating Genode into the build system, I've noticed that the linking stage fails towards the end of building core with the following: /usr/bin/ld: cannot find -ll4 collect2: ld returned 1 exit status make[2]: *** [/home/tyson/i9os/Personalities/GenodeKit/build.pistachio_x86/core/x86/core] Error 1 make[1]: *** [single_target] Error 2 make: *** [.] Error 2
I had to copy the L4 header files into /base-pistachio/include/, despite also having them in a location specified in build.pistachio_x86/etc/pistachio.conf.
Normally, you don't need to copy L4 header files. It should be enough to specify the location of your Pistachio user-land build directory in your 'build.pistachio_x86/etc/pistachio.conf', for example:
PISTACHIO_USER_BUILD_DIR = $(HOME)/src/l4ka-pistachio/user/build
This declaration is used for both the location of the L4 headers and the location of the L4 API-to-ABI library called 'libl4.a'.
Of course, you have to build the Pistachio user land before building Genode. Could you provide us with the output of 'make core VERBOSE='? Using this output, we could see the arguments passed to the compiler and linker.
Regards Norman
Hi Norman. If it helps, I built the Pistachio userland (and ran "make install" to copy headers and .a files to /usr/local/include and /usr/local/lib), and attached the output of "make core VERBOSE=" to the issue on our bug tracker at http://code.google.com/p/i9os/issues/detail?id=2#c2. The build.pistachio_x86/etc/pistachio.conf file at http://code.google.com/p/i9os/source/browse/trunk/Personalities/GenodeKit/bu... the compromise/current state of things, to get the compilation process to where it is now (yes, I realise that it's "non-standard"/suboptimal).
If you need any additional information, feel free to ask.
Thanks, Tyson.
On Sat, Apr 11, 2009 at 7:57 PM, Norman Feske <norman.feske@...1...>wrote:
Hi Tyson,
Tyson Key wrote:
Hi, I am currently working on a new L4Ka::Pistachio-based operating system project, and am contemplating integrating Genode components. Sadly, in the process of integrating Genode into the build system, I've noticed that the linking stage fails towards the end of building core with the following: /usr/bin/ld: cannot find -ll4 collect2: ld returned 1 exit status make[2]: ***
[/home/tyson/i9os/Personalities/GenodeKit/build.pistachio_x86/core/x86/core]
Error 1 make[1]: *** [single_target] Error 2 make: *** [.] Error 2
I had to copy the L4 header files into /base-pistachio/include/, despite also having them in a location specified in build.pistachio_x86/etc/pistachio.conf.
Normally, you don't need to copy L4 header files. It should be enough to specify the location of your Pistachio user-land build directory in your 'build.pistachio_x86/etc/pistachio.conf', for example:
PISTACHIO_USER_BUILD_DIR = $(HOME)/src/l4ka-pistachio/user/build
This declaration is used for both the location of the L4 headers and the location of the L4 API-to-ABI library called 'libl4.a'.
Of course, you have to build the Pistachio user land before building Genode. Could you provide us with the output of 'make core VERBOSE='? Using this output, we could see the arguments passed to the compiler and linker.
Regards Norman
This SF.net email is sponsored by: High Quality Requirements in a Collaborative Environment. Download a free trial of Rational Requirements Composer Now! http://p.sf.net/sfu/www-ibm-com _______________________________________________ Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Hi Tyson,
the issue may originate from your PISTACHIO_USER_BUILD_DIR declaration being a relative path. Could you try specifying the absolute directory instead? The build system includes the 'pistachio.conf' from each target directory. Hence, a relative location is ambiguous. However, to avoid specifying a hard-coded absolute pathname, you could refer to the following variables provided by Genode's build system:
BUILD_BASE_DIR - absolute location of your Genode build directory BASE_DIR - absolute location of the 'genode/base' directory
So the content of your 'pistachio.conf' file could be as such:
PISTACHIO_USER_BUILD_DIR = $(BUILD_BASE_DIR)/../pistachio/user/build
BTW, have you tried using the 'create_builddir' tool in Genode's 'tool/builddir' directory? Since the release 9.2, this tool can be called with 'pistachio_x86' as argument.
Regards Norman
Tyson Key wrote:
Hi Norman. If it helps, I built the Pistachio userland (and ran "make install" to copy headers and .a files to /usr/local/include and /usr/local/lib), and attached the output of "make core VERBOSE=" to the issue on our bug tracker at http://code.google.com/p/i9os/issues/detail?id=2#c2. The build.pistachio_x86/etc/pistachio.conf file at http://code.google.com/p/i9os/source/browse/trunk/Personalities/GenodeKit/bu... represents the compromise/current state of things, to get the compilation process to where it is now (yes, I realise that it's "non-standard"/suboptimal).
If you need any additional information, feel free to ask.
Thanks, Tyson.
Hi again, Norman. I've just modified the configuration file to use relative paths (thanks for the BUILD_BASE_DIR tip, by the way), and now I'm blessed with a shiny new error. Thankfully, it seems to be finding the L4Ka::Pistachio userland libraries and headers now, but it's choking on libsupc++.a towards the end of the linking phase (which is still more than it did, last time).
As usual, I've uploaded the new log file at http://code.google.com/p/i9os/issues/detail?id=2#c3, and the link to the latest revision of the configuration file can also be found there.
Tyson.
On Sat, Apr 11, 2009 at 8:54 PM, Norman Feske <norman.feske@...1...>wrote:
Hi Tyson,
the issue may originate from your PISTACHIO_USER_BUILD_DIR declaration being a relative path. Could you try specifying the absolute directory instead? The build system includes the 'pistachio.conf' from each target directory. Hence, a relative location is ambiguous. However, to avoid specifying a hard-coded absolute pathname, you could refer to the following variables provided by Genode's build system:
BUILD_BASE_DIR - absolute location of your Genode build directory BASE_DIR - absolute location of the 'genode/base' directory
So the content of your 'pistachio.conf' file could be as such:
PISTACHIO_USER_BUILD_DIR = $(BUILD_BASE_DIR)/../pistachio/user/build
BTW, have you tried using the 'create_builddir' tool in Genode's 'tool/builddir' directory? Since the release 9.2, this tool can be called with 'pistachio_x86' as argument.
Regards Norman
Tyson Key wrote:
Hi Norman. If it helps, I built the Pistachio userland (and ran "make install" to copy headers and .a files to /usr/local/include and /usr/local/lib), and attached the output of "make core VERBOSE=" to the issue on our bug tracker at http://code.google.com/p/i9os/issues/detail?id=2#c2. The build.pistachio_x86/etc/pistachio.conf file at
http://code.google.com/p/i9os/source/browse/trunk/Personalities/GenodeKit/bu...
represents the compromise/current state of things, to get the compilation process to where it is now (yes, I realise that it's "non-standard"/suboptimal).
If you need any additional information, feel free to ask.
Thanks, Tyson.
This SF.net email is sponsored by: High Quality Requirements in a Collaborative Environment. Download a free trial of Rational Requirements Composer Now! http://p.sf.net/sfu/www-ibm-com _______________________________________________ Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Hi Tyson,
you are trying to use your host's compiler for compiling Genode for Pistachio. This is not recommended. In your case, the compiler's libsupc++ uses the 'syscall' function, which is a glibc function for invoking Linux system calls. This function does not exist on the Pistachio version of Genode. For compiling Genode for platforms other than Linux, I recommend using the designated tool chain:
http://genode.org/download/tool-chain
You can either use the provided precompiled package or use our tool-chain download-and-build script 'tool/tool_chain'.
Are you aware of our Wiki page regarding Genode on Pistachio?
http://genode.org/community/wiki/GenodeOnL4kaPistachio
Regards Norman
Tyson Key wrote:
Hi again, Norman. I've just modified the configuration file to use relative paths (thanks for the BUILD_BASE_DIR tip, by the way), and now I'm blessed with a shiny new error. Thankfully, it seems to be finding the L4Ka::Pistachio userland libraries and headers now, but it's choking on libsupc++.a towards the end of the linking phase (which is still more than it did, last time).
As usual, I've uploaded the new log file at http://code.google.com/p/i9os/issues/detail?id=2#c3, and the link to the latest revision of the configuration file can also be found there.
Tyson.
Hi Norman. Thanks for your assistance, and recommending the toolchain, and the wiki article. I can confirm that Genode now builds here, and as a result I've been able to close our first bug. Apologies if I've caused any inconvenience.
Tyson.
On Sat, Apr 11, 2009 at 10:00 PM, Norman Feske <norman.feske@...1...
wrote:
Hi Tyson,
you are trying to use your host's compiler for compiling Genode for Pistachio. This is not recommended. In your case, the compiler's libsupc++ uses the 'syscall' function, which is a glibc function for invoking Linux system calls. This function does not exist on the Pistachio version of Genode. For compiling Genode for platforms other than Linux, I recommend using the designated tool chain:
http://genode.org/download/tool-chain
You can either use the provided precompiled package or use our tool-chain download-and-build script 'tool/tool_chain'.
Are you aware of our Wiki page regarding Genode on Pistachio?
http://genode.org/community/wiki/GenodeOnL4kaPistachio
Regards Norman
Tyson Key wrote:
Hi again, Norman. I've just modified the configuration file to use relative paths (thanks for the BUILD_BASE_DIR tip, by the way), and now I'm blessed with a shiny new error. Thankfully, it seems to be finding the L4Ka::Pistachio userland libraries and headers now, but it's choking on libsupc++.a towards the end of the linking phase (which is still more than it did, last time).
As usual, I've uploaded the new log file at http://code.google.com/p/i9os/issues/detail?id=2#c3, and the link to the latest revision of the configuration file can also be found there.
Tyson.
This SF.net email is sponsored by: High Quality Requirements in a Collaborative Environment. Download a free trial of Rational Requirements Composer Now! http://p.sf.net/sfu/www-ibm-com _______________________________________________ Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Hi Tyson,
Tyson Key wrote:
Hi Norman. Thanks for your assistance, and recommending the toolchain, and the wiki article. I can confirm that Genode now builds here, and as a result I've been able to close our first bug. Apologies if I've caused any inconvenience.
no inconvenience at all. :-) I'am glad, you are looking into Genode and I look forward to see the direction, you're going with i9. Good luck for your project!
Norman