سؤال

أنا أستخدم مكتبة ثابتة تابعة لجهة خارجية في مشروع C++ الخاص بي والذي يعتمد على إصدار libssl 0.9.7a.لأسباب مختلفة، إصدار libssl الذي استخدمه مشروعي هو 0.9.8e.

كان كل شيء يسير على ما يرام، حتى قام الطرف الثالث بإجراء تغيير حديث على مكتبته الثابتة.لم أتمكن من تجميع طلبي بنجاح عندما كان يتضمن هذا الإصدار الجديد من المكتبة الثابتة.الإصدار القديم يجمع بشكل جيد.

لست على دراية بتبعيات المكتبة هذه وتوافقها مع الإصدارات السابقة.قيل لنا أنه يجب علينا استخدام الإصدار الذي اقترحته الجهة الخارجية.أريد فقط أن أعرف إذا كان هذا هو السبب حقًا.IMO، أعتقد أنه يجب أن يكون متوافقًا مع الإصدارات السابقة، أليس كذلك؟

أي اتجاه لاستكشاف هذه المشكلة وإصلاحه هو موضع تقدير كبير.

ما يلي هو خطأ التجميع الذي أتلقىه:

cc1plus: note: obsolete option -I- used, please use -iquote instead

In file included from /usr/include/openssl/e_os2.h:56,
                 from /usr/include/openssl/ssl.h:173,
                 from MyClass.cpp:28:

/usr/include/openssl/opensslconf.h:13:30: error: opensslconf-i386.h: No such file or directory
/usr/include/openssl/bn.h:288: error: expected ';' before '*' token
/usr/include/openssl/bn.h:304: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:407: error: 'BN_ULONG' was not declared in this scope
/usr/include/openssl/bn.h:450: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:451: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:452: error: 'BN_ULONG' has not been declared
/usr/include/openssl/bn.h:453: error: 'BN_ULONG' has not been declared
/usr/include/openssl/bn.h:454: error: 'BN_ULONG' has not been declared
/usr/include/openssl/bn.h:455: error: 'BN_ULONG' has not been declared
/usr/include/openssl/bn.h:456: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:471: error: 'BN_ULONG' has not been declared
/usr/include/openssl/bn.h:764: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:765: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:766: error: variable or field 'bn_sqr_words' declared void
/usr/include/openssl/bn.h:766: error: 'BN_ULONG' was not declared in this scope
/usr/include/openssl/bn.h:766: error: 'rp' was not declared in this scope
/usr/include/openssl/bn.h:766: error: expected primary-expression before 'const'
/usr/include/openssl/bn.h:766: error: expected primary-expression before 'int'
/usr/include/openssl/bn.h:767: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:768: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:769: error: 'BN_ULONG' does not name a type
/usr/include/openssl/ssl3.h:303: error: 'PQ_64BIT' does not name a type
/usr/include/openssl/pqueue.h:73: error: 'PQ_64BIT' does not name a type
/usr/include/openssl/pqueue.h:80: error: 'PQ_64BIT' was not declared in this scope
/usr/include/openssl/pqueue.h:80: error: expected primary-expression before 'void'
/usr/include/openssl/pqueue.h:89: error: 'PQ_64BIT' has not been declared
/usr/include/openssl/dtls1.h:92: error: 'PQ_64BIT' does not name a type
/usr/include/openssl/dtls1.h:94: error: 'PQ_64BIT' does not name a type

تقول رسالة الخطأ أنه لا يوجد ملف مثل opensslconf-i386.h، ولكنه موجود بالفعل.

هل لديك أي فكرة عما يحدث من خطأ؟

شكرا لك الوقت!

هل كانت مفيدة؟

المحلول

لم يتمكن المعالج المسبق للغة C من العثور على الملف opensslconf-i386.h - لذلك تحتاج إلى معرفة سبب فشل ذلك.لقد تلقيت تحذيرًا من المترجم بشأن استخدام خيار قديم (ويوصي بإصلاحه) - افعل ذلك.

حسنًا - أنت تقول أن الملف موجود:أين هو، وما هي الأذونات عليه؟كيف يتم تضمينه بواسطة opensslconf.h؟كيف يختلف هذا الخط عن أي رؤوس OpenSSL أخرى مضمنة.ما هي خيارات "-I" التي تستخدمها بخلاف "-I-" المهملة؟

في هذه المرحلة، أود أن أقول إن لديك تثبيتًا خاطئًا أو سطر أوامر غريبًا.

و عنوان السؤال هو...لا تتعلق بشكل واضح بنص السؤال.

  • على المستوى التشغيلي، نعم، يعمل الاثنان معًا في معظم الأغراض.
  • على مستوى الترجمة، نعم، الاثنان متوافقان بشكل أساسي (ما نجح في 0.9.7a يجب أن يعمل مع 0.9.8e).
  • على المستوى الداخلي والتكوين، ستكون هناك اختلافات صغيرة؛قد تكون هناك شفرات أو أوضاع إضافية يدعمها الإصدار الأحدث، على سبيل المثال.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top