Cross compiling protobuf for ARM architecture

https://github.com/eurotech/edc-examples/wiki/Cross-compiling-protobuf-for-ARM-architecture

In order to cross compile Google protobuffers for ARM on linux you need to download and install the packages for

  • arm-linux-gnueabi-gcc
  • arm-linux-gnueabi-g++.

The first step is building a native (x86) version of the protobuf libraries and compiler (protoc) since the native compiler is necessary to build the test applications even if you're compiling for a different architecture:

  • Run the ./configure script without argument from /edcexamples/edc-c-client/protobuf than run make from /edcexamples/edc-c-client/protobuf/src. If everything works you should find the protoc executable in /edcexamples/edc-c-client/protobuf/src/.libs
  • Copy the protoc executable somewhere (for example in /usr/bin)

In order to build the protobuf libraries and test applications for ARM:

  • Run again the ./configure script with the command line --host=arm-linux CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ --with-protoc=/usr/bin/protoc
  • Run make from /edcexamples/edc-c-client/protobuf/src
Cross-compiling Parsec benchmark for ARM architecture involves setting up a build environment on your host machine (likely x86 or x64) that can generate code for ARM targets. Here's a general outline of the steps: 1. **Install required tools**: Ensure you have installed a compiler and toolchain that supports ARM, like `gcc-arm-none-eabi` or `clang-arm`. 2. **Set up target environment**: You'll need to configure the toolchain with the correct paths and settings for the ARM target. This may involve creating a separate configuration file or specifying flags when invoking the compiler. ```sh export CC=arm-none-eabi-gcc export CXX=arm-none-eabi-g++ ``` 3. **Download Parsec**: Download the latest version of Parsec, which is a benchmarking suite, and extract it to a suitable location. 4. **Configure Makefile**: If Parsec has a Makefile, modify it to specify the target architecture. Look for lines similar to `CC`, `CFLAGS`, or `LDFLAGS`. Add or update them as needed, using the ARM-specific versions. 5. **Build for ARM**: Run `make clean && make` in the Parsec directory, replacing `make` with the appropriate command for your build system (e.g., `ninja` if you're using Ninja). ```sh make TARGET=arm-linux-gnueabihf ``` 6. **Test on ARM device or emulator**: Copy the generated `.elf` (executable) file to an ARM device or use an emulator to run it. **Related questions:** 1. What specific version of the ARM toolchain do I need? 2. How can I deal with dependencies if they don't have ARM builds available? 3. Are there any libraries or patches I need to include for compatibility with Parsec on ARM?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值