<p>فشل تجميع iperf 3 على Android مع الخطأ التالي.</p>

تم إنشاؤها على ٧ مايو ٢٠١٦  ·  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 = -static 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 حالة خروج واحدة

أحاول تجميع ثنائي iperf3 لنظام android. أشعر بخيبة أمل كبيرة لعدم وجود معلومات محددة لتجميع ثنائي iperf3 لنظام android. هل يمكن لأحد المساعدة من فضلك؟

شكرا،
-هارديك

documentation portability

التعليق الأكثر فائدة

أو:
./configure - تعطيل التنميط - المضيف = 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 رسميًا. ربما تكون هذه منصة أكثر ملاءمة؟

أنا أواجه نفس المشكلة ، فهل من اقتراح لذلك؟

لقد استبدلت تكوين البرنامج النصي بـ CMake لأغراضي. أنا متأكد من أنه يمكنني الحصول على هذا التجميع لنظام Android ، لكنني حاليًا أقوم بالتجميع لنظام iOS.

https://github.com/palmerc/iperf

[تحديث]

الإعداد HAVE_ENDIAN 1

cmake -D ANDROID_PLATFORM = android-21 -G Ninja -D CMAKE_TOOLCHAIN_FILE = .. / android-ndk / android-ndk-r16b / build / cmake / android.toolchain.cmake ../iperf
cmake - بناء.

عمل. لقد اختبرت أيضًا مع -D ANDROID_ABI = arm64-v8a

إذا أراد شخص ما ، يمكنني إرسال بناء CMake كطلب سحب

أو يمكنك تعديل src / Makefile.in ، وحذف "-pg" من iperf3_profile_CFLAGS و iperf3_profile_LDFLAGS.

فيما يلي ثلاثة حلول لهذه المشكلة ، بالترتيب من أقل جهد إلى بذل أقصى جهد:

  1. في الوقت الذي يفشل فيه ربط الملف التنفيذي الذي يحتوي على ملف تعريف iperf3 ، من المحتمل أن يكون ملف iperf3 القابل للتنفيذ "العادي" قد تم إنشاؤه بالفعل ... على الأقل يكون موجودًا على أنظمتي. لذلك إذا كنت على استعداد لقبول خروج الخطأ من عملية التصنيع (وقليلًا من العمل الضائع على مضيف الإنشاء) ، فقد لا تحتاج إلى فعل أي شيء.

  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 الدائم القابل للتنفيذ (ضمن شجرة المصدر تلك).

في هذه المرحلة ، أميل إلى كتابة هذا كعنصر أسئلة وأجوبة وإغلاق المشكلة.

أو:
./configure - تعطيل التنميط - المضيف = arm-linux-androideabi

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات