Cross compiling boost Windows -> Arm
Hello. I have a problem compiling boost with arm-none-linux-gnueabi-g++ on Windows. Shared library dependencies paths seems to be hard-coded with Windows paths: Example: build\bin.v2\libs\filesystem\build\gcc-arm\release\target-os-linux\threading-multi\... I tried to build with --prefix. Not working. Hardcode-dll-paths not working too. Tried to specify an explicit -rpath. The so shared libraries are compiled with hard-coded paths inside, with backslash \\\ and I cannot use them on linux-arm. On stage directory they are hard-coded too. Any idea how can I disable this behavior and what options should I pass to boost and where? I want simple libraries without full rpaths and the build must be done on Windows with gcc-gnueabi. Thanks. Adrian
On 10.01.2014 22:47, Marius Adrian DOBRESCU wrote:
Hello. I have a problem compiling boost with arm-none-linux-gnueabi-g++ on Windows. Shared library dependencies paths seems to be hard-coded with Windows paths:
Example: build\bin.v2\libs\filesystem\build\gcc-arm\release\target-os-linux\threading-multi\...
I tried to build with --prefix. Not working. Hardcode-dll-paths not working too. Tried to specify an explicit -rpath. The so shared libraries are compiled with hard-coded paths inside, with backslash \\\ and I cannot use them on linux-arm. On stage directory they are hard-coded too.
Any idea how can I disable this behavior and what options should I pass to boost and where?
I want simple libraries without full rpaths and the build must be done on Windows with gcc-gnueabi.
Marius, Did you try: b2 hardcode-dll-paths=false ? What's the exact command line you've used for building? Also, I am not sure what's the exact problem you're having. While using host paths for cross-compiling is certainly wrong, I would have expected dynamic linker to just ignore paths that are not valid. - Volodya
I went to the solution to compile boost on linux with hardcode-dll-paths=false.
I want to make it work also on Windows.
What I did:
In user-config. jam:
using gcc : arm : arm-none-linux-gnueabi-g++. exe ;
Path of the compiler is in PATH variable.
Command for build:
b2.exe target-os=linux toolset=gcc-arm threading=multi variant=release link=shared optimization=speed hardcode-dll-paths=false stage --with-system --with-filesystem
I had copy the libs to a new folder, compiled a simple test program. It compiles and links ok but issues a warning that full path is not found.
I copy the executable and libs to the target but runtime linker is searching for the full path and is not checking anymore in the -L paths and stops with error, lib not found.
Do you have any other workaround to this problem?
-----Original Message-----
From: Vladimir Prus
Hello. I have a problem compiling boost with arm-none-linux-gnueabi-g++ on Windows. Shared library dependencies paths seems to be hard-coded with Windows paths:
Example: build\bin.v2\libs\filesystem\build\gcc-arm\release\target-os-linux\threading-multi\...
I tried to build with --prefix. Not working. Hardcode-dll-paths not working too. Tried to specify an explicit -rpath. The so shared libraries are compiled with hard-coded paths inside, with backslash \\\ and I cannot use them on linux-arm. On stage directory they are hard-coded too.
Any idea how can I disable this behavior and what options should I pass to boost and where?
I want simple libraries without full rpaths and the build must be done on Windows with gcc-gnueabi.
Marius, Did you try: b2 hardcode-dll-paths=false ? What's the exact command line you've used for building? Also, I am not sure what's the exact problem you're having. While using host paths for cross-compiling is certainly wrong, I would have expected dynamic linker to just ignore paths that are not valid. - Volodya _______________________________________________ Boost-users mailing list Boost-users@lists.boost.orgmailto:Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
When i execute b2.exe, I receive an error:
link.jam: no such file or directory
Then it compiles ok but with hardcoded paths.
This may be the reason for not recognizing hardcode-dll-paths?
-----Original Message-----
From: Vladimir Prus
Hello. I have a problem compiling boost with arm-none-linux-gnueabi-g++ on Windows. Shared library dependencies paths seems to be hard-coded with Windows paths:
Example: build\bin.v2\libs\filesystem\build\gcc-arm\release\target-os-linux\threading-multi\...
I tried to build with --prefix. Not working. Hardcode-dll-paths not working too. Tried to specify an explicit -rpath. The so shared libraries are compiled with hard-coded paths inside, with backslash \\\ and I cannot use them on linux-arm. On stage directory they are hard-coded too.
Any idea how can I disable this behavior and what options should I pass to boost and where?
I want simple libraries without full rpaths and the build must be done on Windows with gcc-gnueabi.
Marius, Did you try: b2 hardcode-dll-paths=false ? What's the exact command line you've used for building? Also, I am not sure what's the exact problem you're having. While using host paths for cross-compiling is certainly wrong, I would have expected dynamic linker to just ignore paths that are not valid. - Volodya _______________________________________________ Boost-users mailing list Boost-users@lists.boost.orgmailto:Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
participants (2)
-
Marius Adrian DOBRESCU
-
Vladimir Prus