Closed tsinghoo closed 5 years ago
Hi @tsinghoo , I've been unable to reproduce this build error. Might it be related to you Android development versions? What's your Android SDK, NDK, CMake versions? Do you have some instructions you could share for trying to reproduce it?
Thanks for your reply, What is the preferred Android SDK, NDK, CMake versions?
Please check the following for what I am using:
Android Studio 3.2.1 Build #AI-181.5540.7.32.5056338, built on October 9, 2018 JRE: 1.8.0_152-release-1136-b06 x86_64 JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o macOS 10.12.6
Android SDK Tools 25.2.5 Android Sdk Build tools 28.0.3 CMake 3.6.4111459 NDK 18.1.5063045 node v8.6.0
The following is my commands and outputs:
$ cordova prepare Discovered platform "android@^6.3.0" in config.xml or package.json. Adding it to the project Using cordova-fetch for cordova-android@^6.3.0 Adding android project... Creating Cordova project for the Android platform: Path: platforms/android Package: com.example.usenativemodules Name: UseNativeModules Activity: MainActivity Android target: android-26 Subproject Path: CordovaLib Android project created with cordova-android@6.4.0 Discovered platform "ios@^4.5.4" in config.xml or package.json. Adding it to the project Using cordova-fetch for cordova-ios@^4.5.4 Adding ios project... Creating Cordova project for the iOS platform: Path: platforms/ios Package: com.example.usenativemodules Name: UseNativeModules iOS project created with cordova-ios@4.5.5 Discovered plugin "cordova-plugin-whitelist" in config.xml. Adding it to the project Installing "cordova-plugin-whitelist" for android
This plugin is only applicable for versions of cordova-android greater than 4.0. If you have a previous platform version, you do *not* need this plugin since the whitelist will be built in.
Installing "cordova-plugin-whitelist" for ios Discovered plugin "nodejs-mobile-cordova" in config.xml. Adding it to the project Installing "cordova-plugin-whitelist" for android
This plugin is only applicable for versions of cordova-android greater than 4.0. If you have a previous platform version, you do *not* need this plugin since the whitelist will be built in.
Installing "cordova-plugin-whitelist" for ios Discovered plugin "nodejs-mobile-cordova" in config.xml. Adding it to the project Installing "nodejs-mobile-cordova" for android Subproject Path: CordovaLib Installing "nodejs-mobile-cordova" for ios mac@macos ~/git/nodejs-mobile-samples/cordova/UseNativeModules (orig) $ npm run prepare-nodejs
com.example.usenativemodules@1.0.0 prepare-nodejs /Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules cd www/nodejs-project && npm install
sha3@1.2.2 install /Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/www/nodejs-project/node_modules/sha3 node-gyp rebuild
gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR CXX(target) Release/obj.target/sha3/src/addon.o CXX(target) Release/obj.target/sha3/src/displayIntermediateValues.o CXX(target) Release/obj.target/sha3/src/KeccakF-1600-reference.o CXX(target) Release/obj.target/sha3/src/KeccakNISTInterface.o CXX(target) Release/obj.target/sha3/src/KeccakSponge.o SOLINK_MODULE(target) Release/sha3.node
sqlite3@4.0.1 install /Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/www/nodejs-project/node_modules/sqlite3 node-pre-gyp install --fallback-to-build
node-pre-gyp WARN Using request for node-pre-gyp https download [sqlite3] Success: "/Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/www/nodejs-project/node_modules/sqlite3/lib/binding/node-v57-darwin-x64/node_sqlite3.node" is installed via remote npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN nodejs-mobile-use-native-modules-project@0.1.0 No repository field.
added 69 packages in 18.545s mac@macos ~/git/nodejs-mobile-samples/cordova/UseNativeModules (orig) $ ln -s /u/data/software/develop/java/android-sdk-macosx/ndk-bundle/toolchains/arm-linux-androideabi-4.9 /u/data/software/develop/java/android-sdk-macosx/ndk-bundle/toolchains/mips64el-linux-android mac@macos ~/git/nodejs-mobile-samples/cordova/UseNativeModules (orig) $ cordova prepare android mac@macos ~/git/nodejs-mobile-samples/cordova/UseNativeModules (orig) $ cordova build android ANDROID_HOME=/u/data/software/develop/java/android-sdk-macosx JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home Subproject Path: CordovaLib Error: spawn EACCES mac@macos ~/git/nodejs-mobile-samples/cordova/UseNativeModules (orig) $ chmod +x platforms/android/gradlew mac@macos ~/git/nodejs-mobile-samples/cordova/UseNativeModules (orig) $ cordova build android ANDROID_HOME=/u/data/software/develop/java/android-sdk-macosx JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home Subproject Path: CordovaLib Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details Repository https://jcenter.bintray.com/ replaced by http://maven.aliyun.com/nexus/content/groups/public/. Repository https://jcenter.bintray.com/ replaced by http://maven.aliyun.com/nexus/content/groups/public/. /Users/mac/.nvm/versions/node/v8.6.0/bin/npm publishNonDefault is deprecated and has no effect anymore. All variants are now published. :CopyNodeProjectAssetsarmeabi-v7a :MakeToolchainarmeabi-v7a HOST_OS=darwin HOST_EXE= HOST_ARCH=x86_64 HOST_TAG=darwin-x86_64 HOST_NUM_CPUS=4 BUILD_NUM_CPUS=8 Toolchain installed to /Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/platforms/android/build/standalone-toolchains/arm-linux-androideabi. :BuildNpmModulesarmeabi-v7a FAILED
FAILURE: Build failed with an exception.
What went wrong: Execution failed for task ':BuildNpmModulesarmeabi-v7a'.
A problem occurred starting process 'command 'npm''
Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
Hi @tsinghoo ,
I've been able to build the sample correctly with NDK r17b. I've tried with NDK r18b and it seems that the -fPIC
flag is now mandatory.
Look for node_modules/nodejs-mobile-gyp/addon.gypi
in the Cordova project and replace the following line:
https://github.com/janeasystems/nodejs-mobile-gyp/blob/d7e5446c2cc260f85559d053518d84b4ab6b7908/addon.gypi#L144
Where it reads:
(OS=="linux" and target_arch!="ia32")', {
replace by:
(OS in "linux android" and target_arch!="ia32")', {
Please let us know if this solves your issue, so it may be included in the next nodejs-mobile-gyp version.
Thank you, jaimecbernardo. It works now.
btw, do you have a better solution to handle the following error? It is also in my previous comment.
A problem occurred starting process 'command 'npm''
If you use my solution, you will build the library every time even you do not update the code.
I'm not sure what's causing the A problem occurred starting process 'command 'npm''
for you and didn't understand what your solution to that is. Could you specify it?
To understand the actual error, applying the Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
advice is useful. You can do this by running gradlew
directly like this, for example:
cd platforms/android
./gradlew assembleDebug --stacktrace
This is the output error. I guess that directory does not exists when trying to run 'npm'.
What went wrong: Execution failed for task ':BuildNpmModulesarmeabi-v7a'.
A problem occurred starting process 'command 'npm''
Try: Run with --info or --debug option to get more log output. Run with --scan to get full insights.
Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':BuildNpmModulesarmeabi-v7a'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:103) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73) at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51) at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59) at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101) at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44) at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91) at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:256) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:249) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:238) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98) at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:663) at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:597) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:59) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:130) at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37) at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23) at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43) at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:46) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30) at org.gradle.initialization.DefaultGradleLauncher$ExecuteTasks.run(DefaultGradleLauncher.java:336) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) at org.gradle.initialization.DefaultGradleLauncher.runTasks(DefaultGradleLauncher.java:210) at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:140) at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:115) at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:78) at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:75) at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:152) at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:100) at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:75) at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28) at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32) at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$1.run(RunAsBuildOperationBuildActionRunner.java:43) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:40) at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:49) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:32) at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39) at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25) at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80) at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53) at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:57) at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:32) at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36) at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25) at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43) at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29) at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:64) at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:29) at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59) at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44) at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:45) at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30) at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122) at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122) at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122) at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122) at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74) at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72) at org.gradle.util.Swapper.swap(Swapper.java:38) at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122) at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122) at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122) at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122) at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50) at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) Caused by: org.gradle.process.internal.ExecException: A problem occurred starting process 'command 'npm'' at org.gradle.process.internal.DefaultExecHandle.execExceptionFor(DefaultExecHandle.java:226) at org.gradle.process.internal.DefaultExecHandle.setEndStateInfo(DefaultExecHandle.java:204) at org.gradle.process.internal.DefaultExecHandle.failed(DefaultExecHandle.java:349) at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:85) at org.gradle.internal.operations.BuildOperationIdentifierPreservingRunnable.run(BuildOperationIdentifierPreservingRunnable.java:39) ... 3 more Caused by: net.rubygrapefruit.platform.NativeException: Could not start 'npm' at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:27) at net.rubygrapefruit.platform.internal.WrapperProcessLauncher.start(WrapperProcessLauncher.java:36) at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:67) ... 4 more Caused by: java.io.IOException: Cannot run program "npm" (in directory "/Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/platforms/android/build/nodejs-native-assets-temp-build/nodejs-native-assets-armeabi-v7a/nodejs-project"): error=2, No such file or directory at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25) ... 6 more Caused by: java.io.IOException: error=2, No such file or directory ... 7 more
Get more help at https://help.gradle.org
Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0. See https://docs.gradle.org/4.6/userguide/command_line_interface.html#sec:command_line_warnings
I think the actual error was caused by the build process being unable to find npm in the PATH:
Caused by: java.io.IOException: Cannot run program "npm" (in directory "/Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/platforms/android/build/nodejs-native-assets-temp-build/nodejs-native-assets-armeabi-v7a/nodejs-project"): error=2, No such file or directory
At least that's what was happening when it occurred to me as well.
When I got this error, I was able to run "npm" in the command line, but the following directory did not exist:
/Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/platforms/android/build/nodejs-native-assets-temp-build/nodejs-native-assets-armeabi-v7a/nodejs-project
That is why the error disappears if you add this directory to outputs.file of task "CopyNodeProjectAssets${abi_name}"
When I executed "cordova run android" in macos to build "Cordova Use Native Library" samples, I got the following error, any advice?
/Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/platforms/android/build/standalone-toolchains/arm-linux-androideabi/bin/arm-linux-androideabi-clang++ '-DNODE_GYP_MODULE_NAME=sha3' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DNODE_ENGINE="v8"' '-DNODE_ENGINE_V8' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DBUILDING_NODE_EXTENSION' '-D_GLIBCXX_USE_C99_MATH' -I/Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/platforms/android/src/com/janeasystems/cdvnodejsmobile/jni/libnode/include/node -I/Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/platforms/android/src/com/janeasystems/cdvnodejsmobile/jni/libnode/src -I/Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/platforms/android/src/com/janeasystems/cdvnodejsmobile/jni/libnode/deps/uv/include -I/Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/platforms/android/src/com/janeasystems/cdvnodejsmobile/jni/libnode/deps/v8/include -I../../nan -Wall -Wextra -Wno-unused-parameter -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++0x -MMD -MF ./Release/.deps/Release/obj.target/sha3/src/KeccakNISTInterface.o.d.raw -c -o Release/obj.target/sha3/src/KeccakNISTInterface.o ../src/KeccakNISTInterface.cpp /Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/platforms/android/build/standalone-toolchains/arm-linux-androideabi/bin/arm-linux-androideabi-clang++ '-DNODE_GYP_MODULE_NAME=sha3' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DNODE_ENGINE="v8"' '-DNODE_ENGINE_V8' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DBUILDING_NODE_EXTENSION' '-D_GLIBCXX_USE_C99_MATH' -I/Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/platforms/android/src/com/janeasystems/cdvnodejsmobile/jni/libnode/include/node -I/Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/platforms/android/src/com/janeasystems/cdvnodejsmobile/jni/libnode/src -I/Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/platforms/android/src/com/janeasystems/cdvnodejsmobile/jni/libnode/deps/uv/include -I/Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/platforms/android/src/com/janeasystems/cdvnodejsmobile/jni/libnode/deps/v8/include -I../../nan -Wall -Wextra -Wno-unused-parameter -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++0x -MMD -MF ./Release/.deps/Release/obj.target/sha3/src/KeccakSponge.o.d.raw -c -o Release/obj.target/sha3/src/KeccakSponge.o ../src/KeccakSponge.cpp /Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/platforms/android/build/standalone-toolchains/arm-linux-androideabi/bin/arm-linux-androideabi-clang++ -shared -rdynamic -fPIC -Wl,-soname=sha3.node -o Release/obj.target/sha3.node -Wl,--start-group Release/obj.target/sha3/src/addon.o Release/obj.target/sha3/src/displayIntermediateValues.o Release/obj.target/sha3/src/KeccakF-1600-reference.o Release/obj.target/sha3/src/KeccakNISTInterface.o Release/obj.target/sha3/src/KeccakSponge.o -Wl,--end-group -llog /Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/platforms/android/src/com/janeasystems/cdvnodejsmobile/jni/libnode//bin/armeabi-v7a/libnode.so /Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/platforms/android/build/standalone-toolchains/arm-linux-androideabi/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: Release/obj.target/sha3/src/addon.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC /Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/platforms/android/build/standalone-toolchains/arm-linux-androideabi/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: Release/obj.target/sha3/src/addon.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC /Users/mac/git/nodejs-mobile-samples/cordova/UseNativeModules/platforms/android/build/standalone-toolchains/arm-linux-androideabi/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: Release/obj.target/sha3/src/addon.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC