below is my build.gradle. build failed cause implicit declaration of function 'pipe' is invalid in C99 [-Wimplicit-function-declaration] if (-1 == pipe(ctx->control_pipe)) { ^ apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion = 21
buildToolsVersion = "21.1.2"
defaultConfig.with {
applicationId = "org.shadowvpn.shadowvpn"
minSdkVersion.apiLevel = 15
targetSdkVersion.apiLevel = 21
versionCode = 1
versionName = "1.0"
}
}
android.buildTypes {
release {
isMinifyEnabled = false
proguardFiles += file('proguard-rules.pro')
}
}
android.ndk {
moduleName = "ShadowVPN-jni"
toolchain = "clang"
toolchainVersion = "3.6"
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_aead/chacha20poly1305/sodium")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_auth/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_auth/hmacsha256/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_auth/hmacsha256/cp/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_auth/hmacsha512/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_auth/hmacsha512/cp/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_auth/hmacsha512256/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_auth/hmacsha512256/cp/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_box/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_core/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_core/hsalsa20/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_core/hsalsa20/ref2/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_core/salsa20/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_core/salsa20/ref/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_core/salsa2012/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_core/salsa2012/ref/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_core/salsa208/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_core/salsa208/ref/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_generichash/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_generichash/blake2/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_generichash/blake2/ref/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_hash/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_hash/sha256/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_hash/sha256/cp/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_hash/sha512/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_hash/sha512/cp/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_onetimeauth/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_onetimeauth/poly1305/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_pwhash/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/nosse/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/sse/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_scalarmult/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_scalarmult/curve25519/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_secretbox/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_shorthash/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_shorthash/siphash24/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_sign/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_sign/ed25519/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_sign/ed25519/ref10/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_stream/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_stream/aes128ctr/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_stream/chacha20/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_stream/chacha20/ref/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_stream/salsa20/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_stream/salsa20/amd64_xmm6/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_stream/salsa20/ref/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_verify/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_verify/16/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_verify/16/ref/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_verify/32/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_verify/32/ref/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_verify/64/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/crypto_verify/64/ref/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/include/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/include/sodium/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/randombytes/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/randombytes/salsa20/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/randombytes/sysrandom/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/libsodium/src/libsodium/sodium/")}".toString()
CFlags += "-I${file("src/main/jni/ShadowVPN/src")}".toString()
ldLibs += "log"
stl = "system"
}
}
ERROR LOGS:
compiling vpn.c successful.
/Users/shawn/Developer/github/ShadowVPNAndroid/mobile/src/main/jni/vpn.c:35:13: warning: implicit declaration of function 'pipe' is invalid in C99 [-Wimplicit-function-declaration]
if (-1 == pipe(ctx->control_pipe)) {
^
/Users/shawn/Developer/github/ShadowVPNAndroid/mobile/src/main/jni/vpn.c:47:5: warning: implicit declaration of function 'close' is invalid in C99 [-Wimplicit-function-declaration]
close(ctx->tun);
^
2 warnings generated.
compiling version.c failed.
/Users/shawn/Developer/github/ShadowVPNAndroid/mobile/src/main/jni/ShadowVPN/libsodium/src/libsodium/sodium/version.c:2:10: fatal error: 'version.h' file not found
#include "version.h"
^
1 error generated.
compiling aead_chacha20poly1305.c failed.
In file included from /Users/shawn/Developer/github/ShadowVPNAndroid/mobile/src/main/jni/ShadowVPN/libsodium/test/default/aead_chacha20poly1305.c:3:
In file included from /Users/shawn/Developer/github/ShadowVPNAndroid/mobile/src/main/jni/ShadowVPN/libsodium/test/default/cmptest.h:11:
/Users/shawn/Developer/github/ShadowVPNAndroid/mobile/src/main/jni/ShadowVPN/libsodium/src/libsodium/include/sodium.h:48:10: fatal error: 'sodium/version.h' file not found
#include "sodium/version.h"
^
1 error generated.
compiling auth.c failed.
In file included from /Users/shawn/Developer/github/ShadowVPNAndroid/mobile/src/main/jni/ShadowVPN/libsodium/test/default/auth.c:3:
In file included from /Users/shawn/Developer/github/ShadowVPNAndroid/mobile/src/main/jni/ShadowVPN/libsodium/test/default/cmptest.h:11:
/Users/shawn/Developer/github/ShadowVPNAndroid/mobile/src/main/jni/ShadowVPN/libsodium/src/libsodium/include/sodium.h:48:10: fatal error: 'sodium/version.h' file not found
#include "sodium/version.h"
^
1 error generated.
compiling auth2.c failed.
In file included from /Users/shawn/Developer/github/ShadowVPNAndroid/mobile/src/main/jni/ShadowVPN/libsodium/test/default/auth2.c:4:
In file included from /Users/shawn/Developer/github/ShadowVPNAndroid/mobile/src/main/jni/ShadowVPN/libsodium/test/default/cmptest.h:11:
/Users/shawn/Developer/github/ShadowVPNAndroid/mobile/src/main/jni/ShadowVPN/libsodium/src/libsodium/include/sodium.h:48:10: fatal error: 'sodium/version.h' file not found
#include "sodium/version.h"
^
1 error generated.
compiling utils.c successful.
compiling auth7.c failed.
In file included from /Users/shawn/Developer/github/ShadowVPNAndroid/mobile/src/main/jni/ShadowVPN/libsodium/test/default/auth7.c:3:
In file included from /Users/shawn/Developer/github/ShadowVPNAndroid/mobile/src/main/jni/ShadowVPN/libsodium/test/default/cmptest.h:11:
/Users/shawn/Developer/github/ShadowVPNAndroid/mobile/src/main/jni/ShadowVPN/libsodium/src/libsodium/include/sodium.h:48:10: fatal error: 'sodium/version.h' file not found
#include "sodium/version.h"
^
1 error generated.
Your build is not failing because of the pipe
function, that's a warning. Your build is failing because the compiler cannot find the version.h
file. I'm guessing you are missing one of those (many) -I
flags, specifically maybe for this folder: /Users/shawn/Developer/github/ShadowVPNAndroid/mobile/src/main/jni/ShadowVPN/libsodium/src/libsodium/sodium/
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.