How do I compile an existing C program for Android using NDK?

和自甴很熟 提交于 2019-12-21 02:42:47

问题


I am writing an Android app to test network performance, and I want to use iPerf in the app. I can find binary iPerf files already compiled for Android (and then I can run iPerf on the phone and collect its output) but I'm interested in compiling the files myself.

Here, someone presents scripts that can be used to compile the program: http://sourceforge.net/tracker/index.php?func=detail&aid=3533374&group_id=128336&atid=711373

I know that it requires the NDK but I don't know where to start. Are there any good resources or advice that can help guide me to compiling this on my own (on Windows, but I also have Cygwin). I know C and how to use GCC on linux, but I'm not sure where to start here.

Thanks for any help in advance!


回答1:


Here is a good discussion of getting started with the NDK.

https://stackoverflow.com/questions/5375453/looking-for-a-good-tutorial-on-android-ndk

If you work through the tutorial you will build your own NDK "Hello, World" sort of app. It's simple but it will help you understand the NDK.

Here's a direct link to the tutorial: http://mobile.tutsplus.com/tutorials/android/ndk-tutorial/




回答2:


Work on Iperf3

    #!/bin/sh
wget https://dl.google.com/android/repository/android-ndk-r18-linux-x86_64.zip
sudo apt-get install unzip
unzip android-ndk-r18-linux-x86_64.zip
#--arch arm or arm64 https://developer.android.com/ndk/guides/standalone_toolchain
android-ndk-r18/build/tools/make_standalone_toolchain.py --arch arm --api 26 --install-dir=my-toolchain
# Add the standalone toolchain to the search path.
export PATH=$PATH:`pwd`/my-toolchain/bin

# Tell configure what tools to use. aarch64-linux-android
target_host=arm-linux-androideabi #aarch64-linux-android or arm-linux-androideabi
export AR=$target_host-ar
export AS=$target_host-clang
export CC=$target_host-clang
export CXX=$target_host-clang++
export LD=$target_host-ld
export STRIP=$target_host-strip

# Tell configure what flags Android requires.
export CFLAGS="-fPIE -fPIC"
export LDFLAGS="-pie"
sudo apt-get install build-essential git
git clone https://github.com/esnet/iperf
cd iperf/
echo manual edit src/iperf_api.c change to char template[] = "/data/local/tmp/iperf3.XXXXXX";

#--disable-profiling or edit src/Makefile.in deleting "-pg" from iperf3_profile_CFLAGS and iperf3_profile_LDFLAGS
#./configure --host=arm-linux-androideabi CFLAGS=-static CXXFLAGS=-static --disable-profiling 
#make

##iperf2
#sudo apt-get install autotools-dev
#cp /usr/share/misc/config.{sub,guess} .

#adb push src/iperf3 /data/local/tmp
#adb shell chmod 755 /data/local/tmp/iperf3
#adb shell "/data/local/tmp/iperf3 -v"


来源:https://stackoverflow.com/questions/11197912/how-do-i-compile-an-existing-c-program-for-android-using-ndk

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!