Closed jonmcclung closed 6 years ago
Please have a look at the docs/BUILD_ANDROID.adoc document -- see here https://github.com/nanomsg/nng/blob/master/docs/BUILD_ANDROID.adoc
Specifically what is happening is that your overrides lack enough information for CMake to realize that it is being built for an embedded target, so it is automatically trying to build shared libraries and tests which are inappropriate for your target.
The normal usage with CMake for such targets is to pass CMake a toolchain file, which specifies those things, instead of by overriding individual variables in the environment. The presence of the toolchain file indicates a cross-compile situation, which affects the behavior accordingly.
If you don't want to use a toolchain file, you can use instead an undocumented setting, NNG_NATIVE_BUILD (which should be set to OFF) which should cause the same effects, or you could manually disable tests and tools with NNG_TESTS=OFF and NNG_TOOLS=OFF (and also set BUILD_SHARED_LIBS=OFF as well.)
That document proved to be very helpful. I did ultimately have to manually call ranlib, but other than that it built without errors. Thank you.
I’m surprised you needed to run ranlib. I’m a little concerned about that.
On Mon, Jul 2, 2018 at 12:02 PM Jon McClung notifications@github.com wrote:
Closed #561 https://github.com/nanomsg/nng/issues/561.
— You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/nanomsg/nng/issues/561#event-1712338144, or mute the thread https://github.com/notifications/unsubscribe-auth/ABPDfczw8ziVo3xnOT9QfFjKboCw6guYks5uCm5YgaJpZM4U_tFA .
I think that may just be an issue on my end, because I had to do it with another dependency as well.
ok. let me know if you have the same issue when starting from scratch using the directions in that BUILDING doc.
@gdamore I fixed the issue with my toolchain today and can confirm that it was not necessary to manually call ranlib.
Note that by filing an issue, you agree that you have read and agreed to our contribution guidelines.
NNG & Platform details.
NNG version 1.0.0 (commit 63418ae) host platform: macOS 10.12.5 target platform: Android armv7a API level 26 using clang
Expected Behavior
I am trying to compile NNG for Android. I am using the standalone toolchain generated by
android-ndk-r17b/build/tools/make_standalone_toolchain.py --arch arm --api 26
. The expected behavior is that I would generate a static NNG library that I could use in my project.Actual Behavior
Effectively, there is an option
-Wl,-search_paths_first
which is somehow being added to the linker options (I have searched all project files and been unable to determine where it is being added). This is not being interpreted correctly by the linker, it somehow thinks I want to define the entry symbol to bearch_paths_first
. Of course, no such entry symbol is defined, so I get the warning multiple times.Note: It appears that the target is still being built properly in the end. I can't be certain, though, because the project I'm building is being ported to Android and there are still other dependencies I haven't gotten working yet, so I can't say whether or not NNG will give me problems when everything else is done. Still, I would prefer a fix or at least a workaround since this seems like something fairly basic.
Steps to Reproduce
I have a build script
build.sh
that should be placed in the directory above nng-master:The following is the output of running build.sh: