Hi,
I am trying to cross-compile gRPC with arm-linux-gnueabi.
I am on Ubuntu 14.04, i686-linux-gnu.
I have already cross-compiled all the third parties (OpenSSL, zlib and protobuf) in particular directories.
To cross-compile gRPC I use CMakeLists. For that, I create a cmake-build directory in which I use the command : cmake ../ -G"Unix Makefiles" -DCMAKE_C_COMPILER=arm-linux-gnueabi-gcc -DCMAKE_CXX_COMPILER=arm-linux-gnueabi-g++.
Then I run make.
Every thing seems fine until 80% where I get these errors :
third_party/boringssl/crypto/libcrypto.a(sha1.c.o): In function `SHA1_Update':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/sha/../digest/md32_common.h:188: undefined reference to `sha1_block_data_order'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/sha/../digest/md32_common.h:204: undefined reference to `sha1_block_data_order'
third_party/boringssl/crypto/libcrypto.a(sha1.c.o): In function `SHA1_Transform':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/sha/../digest/md32_common.h:219: undefined reference to `sha1_block_data_order'
third_party/boringssl/crypto/libcrypto.a(sha1.c.o): In function `SHA1_Final':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/sha/../digest/md32_common.h:235: undefined reference to `sha1_block_data_order'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/sha/../digest/md32_common.h:249: undefined reference to `sha1_block_data_order'
third_party/boringssl/crypto/libcrypto.a(sha256.c.o): In function `SHA256_Update':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/sha/../digest/md32_common.h:188: undefined reference to `sha256_block_data_order'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/sha/../digest/md32_common.h:204: undefined reference to `sha256_block_data_order'
third_party/boringssl/crypto/libcrypto.a(sha256.c.o): In function `SHA256_Transform':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/sha/../digest/md32_common.h:219: undefined reference to `sha256_block_data_order'
third_party/boringssl/crypto/libcrypto.a(sha256.c.o): In function `SHA256_Final':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/sha/../digest/md32_common.h:235: undefined reference to `sha256_block_data_order'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/sha/../digest/md32_common.h:249: undefined reference to `sha256_block_data_order'
third_party/boringssl/crypto/libcrypto.a(sha512.c.o): In function `SHA512_Transform':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/sha/sha512.c:174: undefined reference to `sha512_block_data_order'
third_party/boringssl/crypto/libcrypto.a(sha512.c.o): In function `SHA512_Update':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/sha/sha512.c:206: undefined reference to `sha512_block_data_order'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/sha/sha512.c:215: undefined reference to `sha512_block_data_order'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/sha/sha512.c:222: undefined reference to `sha512_block_data_order'
third_party/boringssl/crypto/libcrypto.a(sha512.c.o): In function `SHA512_Final':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/sha/sha512.c:246: undefined reference to `sha512_block_data_order'
third_party/boringssl/crypto/libcrypto.a(sha512.c.o):/home/<my_name>/grpc_arm/third_party/boringssl/crypto/sha/sha512.c:267: more undefined references to `sha512_block_data_order' follow
third_party/boringssl/crypto/libcrypto.a(e_aes.c.o): In function `CRYPTO_is_NEON_capable':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/../include/openssl/cpu.h:116: undefined reference to `CRYPTO_is_NEON_capable_at_runtime'
third_party/boringssl/crypto/libcrypto.a(e_aes.c.o): In function `hwaes_capable':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/cipher/e_aes.c:123: undefined reference to `CRYPTO_is_ARMv8_AES_capable'
third_party/boringssl/crypto/libcrypto.a(e_aes.c.o): In function `aes_init_key':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/cipher/e_aes.c:299: undefined reference to `aes_v8_set_decrypt_key'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/cipher/e_aes.c:321: undefined reference to `aes_v8_set_encrypt_key'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/cipher/e_aes.c:351: undefined reference to `aes_v8_decrypt'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/cipher/e_aes.c:351: undefined reference to `aes_v8_cbc_encrypt'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/cipher/e_aes.c:351: undefined reference to `bsaes_cbc_encrypt'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/cipher/e_aes.c:351: undefined reference to `aes_v8_encrypt'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/cipher/e_aes.c:351: undefined reference to `aes_v8_ctr32_encrypt_blocks'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/cipher/e_aes.c:351: undefined reference to `bsaes_ctr32_encrypt_blocks'
third_party/boringssl/crypto/libcrypto.a(e_aes.c.o): In function `aes_ctr_set_key':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/cipher/e_aes.c:427: undefined reference to `aes_v8_set_encrypt_key'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/cipher/e_aes.c:467: undefined reference to `aes_v8_encrypt'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/cipher/e_aes.c:467: undefined reference to `aes_v8_ctr32_encrypt_blocks'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/cipher/e_aes.c:467: undefined reference to `bsaes_ctr32_encrypt_blocks'
third_party/boringssl/crypto/libcrypto.a(e_aes.c.o): In function `EVP_has_aes_hardware':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/cipher/e_aes.c:1763: undefined reference to `CRYPTO_is_ARMv8_PMULL_capable'
third_party/boringssl/crypto/libcrypto.a(gcm.c.o): In function `CRYPTO_gcm128_init':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:491: undefined reference to `gcm_gmult_4bit'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:491: undefined reference to `gcm_ghash_4bit'
third_party/boringssl/crypto/libcrypto.a(gcm.c.o): In function `CRYPTO_gcm128_setiv':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:525: undefined reference to `gcm_gmult_4bit'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:533: undefined reference to `gcm_gmult_4bit'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:553: undefined reference to `gcm_gmult_4bit'
third_party/boringssl/crypto/libcrypto.a(gcm.c.o): In function `CRYPTO_gcm128_aad':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:601: undefined reference to `gcm_gmult_4bit'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:611: undefined reference to `gcm_ghash_4bit'
third_party/boringssl/crypto/libcrypto.a(gcm.c.o): In function `CRYPTO_gcm128_encrypt':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:664: undefined reference to `gcm_gmult_4bit'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:682: undefined reference to `gcm_gmult_4bit'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:702: undefined reference to `gcm_gmult_4bit'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:731: undefined reference to `gcm_ghash_4bit'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:755: undefined reference to `gcm_ghash_4bit'
third_party/boringssl/crypto/libcrypto.a(gcm.c.o): In function `CRYPTO_gcm128_decrypt':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:824: undefined reference to `gcm_gmult_4bit'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:844: undefined reference to `gcm_gmult_4bit'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:867: undefined reference to `gcm_gmult_4bit'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:878: undefined reference to `gcm_ghash_4bit'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:901: undefined reference to `gcm_ghash_4bit'
third_party/boringssl/crypto/libcrypto.a(gcm.c.o): In function `CRYPTO_gcm128_encrypt_ctr32':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:990: undefined reference to `gcm_gmult_4bit'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:1008: undefined reference to `gcm_gmult_4bit'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:1023: undefined reference to `gcm_ghash_4bit'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:1043: undefined reference to `gcm_ghash_4bit'
third_party/boringssl/crypto/libcrypto.a(gcm.c.o): In function `CRYPTO_gcm128_decrypt_ctr32':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:1099: undefined reference to `gcm_gmult_4bit'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:1119: undefined reference to `gcm_gmult_4bit'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:1127: undefined reference to `gcm_ghash_4bit'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:1145: undefined reference to `gcm_ghash_4bit'
third_party/boringssl/crypto/libcrypto.a(gcm.c.o): In function `CRYPTO_gcm128_finish':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:1201: undefined reference to `gcm_gmult_4bit'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/modes/gcm.c:1221: undefined reference to `gcm_gmult_4bit'
third_party/boringssl/crypto/libcrypto.a(aes.c.o): In function `hwaes_capable':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/aes/aes.c:1066: undefined reference to `CRYPTO_is_ARMv8_AES_capable'
third_party/boringssl/crypto/libcrypto.a(aes.c.o): In function `AES_encrypt':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/aes/aes.c:1109: undefined reference to `aes_v8_encrypt'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/aes/aes.c:1111: undefined reference to `asm_AES_encrypt'
third_party/boringssl/crypto/libcrypto.a(aes.c.o): In function `AES_decrypt':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/aes/aes.c:1118: undefined reference to `aes_v8_decrypt'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/aes/aes.c:1120: undefined reference to `asm_AES_decrypt'
third_party/boringssl/crypto/libcrypto.a(aes.c.o): In function `AES_set_encrypt_key':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/aes/aes.c:1127: undefined reference to `aes_v8_set_encrypt_key'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/aes/aes.c:1129: undefined reference to `asm_AES_set_encrypt_key'
third_party/boringssl/crypto/libcrypto.a(aes.c.o): In function `AES_set_decrypt_key':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/aes/aes.c:1136: undefined reference to `aes_v8_set_decrypt_key'
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/aes/aes.c:1138: undefined reference to `asm_AES_set_decrypt_key'
third_party/boringssl/crypto/libcrypto.a(montgomery.c.o): In function `BN_mod_mul_montgomery':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/bn/montgomery.c:525: undefined reference to `bn_mul_mont'
third_party/boringssl/crypto/libcrypto.a(chacha_generic.c.o): In function `CRYPTO_is_NEON_capable':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/../include/openssl/cpu.h:116: undefined reference to `CRYPTO_is_NEON_capable_at_runtime'
third_party/boringssl/crypto/libcrypto.a(chacha_generic.c.o): In function `CRYPTO_chacha_20':
/home/<my_name>/grpc_arm/third_party/boringssl/crypto/chacha/chacha_generic.c:96: undefined reference to `CRYPTO_chacha_20_neon'
collect2: error: ld returned 1 exit status
make[2]: *** [grpc_create_jwt] Error 1
make[1]: *** [CMakeFiles/grpc_create_jwt.dir/all] Error 2
make: *** [all] Error 2
I think it is linked with OpenSSL, but I don't know how to link my corss-compiled openssl to the makefile.
Thank you.