<p>Android์—์„œ iperf 3 ์ปดํŒŒ์ผ์ด ๋‹ค์Œ ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.</p>

์— ๋งŒ๋“  2016๋…„ 05์›” 07์ผ  ยท  7์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: esnet/iperf

๋ช…๋ น:
./configure --host=arm-linux-gnueabihf --prefix=/home/ec2-user/iperf_install/ CC=arm-linux-androideabi-gcc CXX=arm-linux-androideabi-g++ CFLAGS=-์ •์  CXXFLAGS=- ๊ณต์ „

main.c:62: ์˜ค๋ฅ˜: '__gnu_mcount_nc'์— ๋Œ€ํ•œ ์ •์˜๋˜์ง€ ์•Š์€ ์ฐธ์กฐ
main.c:124: ์˜ค๋ฅ˜: '__gnu_mcount_nc'์— ๋Œ€ํ•œ ์ •์˜๋˜์ง€ ์•Š์€ ์ฐธ์กฐ
main.c:131: ์˜ค๋ฅ˜: '__gnu_mcount_nc'์— ๋Œ€ํ•œ ์ •์˜๋˜์ง€ ์•Š์€ ์ฐธ์กฐ
cjson.c:50: ์˜ค๋ฅ˜: '__gnu_mcount_nc'์— ๋Œ€ํ•œ ์ •์˜๋˜์ง€ ์•Š์€ ์ฐธ์กฐ
collect2: ์˜ค๋ฅ˜: ld๊ฐ€ 1 ์ข…๋ฃŒ ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋“œ๋กœ์ด๋“œ์šฉ iperf3 ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ปดํŒŒ์ผํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ์šฉ iperf3 ๋ฐ”์ด๋„ˆ๋ฆฌ ์ปดํŒŒ์ผ์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ์ •๋ณด๊ฐ€ ์—†๋‹ค๋Š” ์ ์— ๋งค์šฐ ์‹ค๋งํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ๋„์™€์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”,
-ํ•˜๋”•

documentation portability

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋˜๋Š”:
./configure --disable-profileing --host=arm-linux-androideabi

๋ชจ๋“  7 ๋Œ“๊ธ€

cjson.c:50: ์˜ค๋ฅ˜: '__gnu_mcount_nc'์— ๋Œ€ํ•œ ์ •์˜๋˜์ง€ ์•Š์€ ์ฐธ์กฐ
cjson.c:56: ์˜ค๋ฅ˜: '__gnu_mcount_nc'์— ๋Œ€ํ•œ ์ •์˜๋˜์ง€ ์•Š์€ ์ฐธ์กฐ
cjson.c:72: ์˜ค๋ฅ˜: '__gnu_mcount_nc'์— ๋Œ€ํ•œ ์ •์˜๋˜์ง€ ์•Š์€ ์ฐธ์กฐ
cjson.c:85: ์˜ค๋ฅ˜: '__gnu_mcount_nc'์— ๋Œ€ํ•œ ์ •์˜๋˜์ง€ ์•Š์€ ์ฐธ์กฐ

iperf3๋Š” ๊ณต์‹์ ์œผ๋กœ Android๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ "๋„์›€์ด ํ•„์š”ํ•จ"์œผ๋กœ ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

iperf2๋Š” ๊ณต์‹์ ์œผ๋กœ Android๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ทธ๊ฒƒ์ด ๋” ์ ํ•ฉํ•œ ํ”Œ๋žซํผ์ด ์•„๋‹๊นŒ?

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ œ์•ˆ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด ๋ชฉ์ ์„ ์œ„ํ•ด Configure ์Šคํฌ๋ฆฝํŠธ๋ฅผ CMake๋กœ ๊ต์ฒดํ–ˆ์Šต๋‹ˆ๋‹ค. Android์šฉ์œผ๋กœ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•˜์ง€๋งŒ ํ˜„์žฌ iOS์šฉ์œผ๋กœ ์ปดํŒŒ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/palmerc/iperf

[์—…๋ฐ์ดํŠธ]

HAVE_ENDIAN 1 ์„ค์ •

cmake -D ANDROID_PLATFORM=android-21 -G ๋‹Œ์ž -D CMAKE_TOOLCHAIN_FILE=../android-ndk/android-ndk-r16b/build/cmake/android.toolchain.cmake ../iperf
cmake -- ๋นŒ๋“œ .

์ผํ–ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ -D ANDROID_ABI=arm64-v8a๋กœ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€ ์›ํ•˜๋ฉด CMake ๋นŒ๋“œ๋ฅผ pull ์š”์ฒญ์œผ๋กœ ์ œ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜๋Š” iperf3_profile_CFLAGS ๋ฐ iperf3_profile_LDFLAGS์—์„œ "-pg"๋ฅผ ์‚ญ์ œํ•˜์—ฌ src/Makefile.in์„ ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์„ธ ๊ฐ€์ง€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

  1. iperf3 ํ”„๋กœํŒŒ์ผ๋ง๋œ ์‹คํ–‰ ํŒŒ์ผ์˜ ์—ฐ๊ฒฐ์ด ์‹คํŒจํ•  ๋•Œ "์ผ๋ฐ˜" iperf3 ์‹คํ–‰ ํŒŒ์ผ์ด ์ด๋ฏธ ์ƒ์„ฑ๋˜์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค...์ ์–ด๋„ ๋‚ด ์‹œ์Šคํ…œ์—๋Š” ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ make ํ”„๋กœ์„ธ์Šค์—์„œ ์˜ค๋ฅ˜ ์ข…๋ฃŒ๋ฅผ ์ˆ˜๋ฝํ•˜๋ ค๋Š” ๊ฒฝ์šฐ(๊ทธ๋ฆฌ๊ณ  ๋นŒ๋“œ ํ˜ธ์ŠคํŠธ์—์„œ ์•ฝ๊ฐ„์˜ ๋‚ญ๋น„ ์ž‘์—…) ์•„๋ฌด ๊ฒƒ๋„ ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

  2. configure ๋‹จ๊ณ„ ํ›„์— src/Makefile ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •์˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

noinst_PROGRAMS = t_timer$(EXEEXT) t_units$(EXEEXT) t_uuid$(EXEEXT) \
        iperf3_profile$(EXEEXT)

๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŽธ์ง‘ํ•˜๋ฉด ํ”„๋กœํŒŒ์ผ๋ง๋œ iperf3์˜ ๋นŒ๋“œ๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.

noinst_PROGRAMS = t_timer$(EXEEXT) t_units$(EXEEXT) t_uuid$(EXEEXT)
  1. ์œ„์˜ ํ•ญ๋ชฉ 2์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋” ์˜๊ตฌ์ ์ž…๋‹ˆ๋‹ค... src/Makefile.am ๋ฅผ ํŽธ์ง‘ํ•˜๊ณ  ํ–‰ ์ฝ๊ธฐ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•˜๋ฉด:
noinst_PROGRAMS         = t_timer t_units t_uuid iperf3_profile

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ด๋ ค๋ฉด:

noinst_PROGRAMS         = t_timer t_units t_uuid

๊ทธ๋Ÿฐ ๋‹ค์Œ ./bootstrap.sh ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด Makefiles ํ”„๋กœ์ ํŠธ๊ฐ€ ์žฌ์ƒ์„ฑ๋˜์–ด ํ”„๋กœํŒŒ์ผ๋ง๋œ iperf3 ์‹คํ–‰ ํŒŒ์ผ์„ ์˜๊ตฌ์ ์œผ๋กœ ์ œ์™ธํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค(ํ•ด๋‹น ์†Œ์Šค ํŠธ๋ฆฌ ๋‚ด์—์„œ).

์ด ์‹œ์ ์—์„œ ๋‚˜๋Š” ์ด๊ฒƒ์„ FAQ ํ•ญ๋ชฉ์œผ๋กœ ์ž‘์„ฑํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜๋Š”:
./configure --disable-profileing --host=arm-linux-androideabi

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰