के साथ एआरएम के लिए सीएमके संकलन कैसे पार करें संक्षेप में मैं सीएमके के साथ संकलित सीएमके को पार करने की कोशिश कर रहा हूं, और मुझे नहीं लगता कि मैं पुस्तकालयों को सही तरीके से जोड़ रहा हूं। मैं जो करना चाहता हूं वह संभव नहीं हो सकता है, लेकिन मुझे कम से कम यह जानना अच्छा लगेगा कि ऐसा क्यों संभव नहीं है।सीएमके
सिस्टम: होस्ट एक कैविम एआरएम 9 सीपीयू के साथ Linux box है। यह वर्तमान में लिनक्स कर्नेल और Debian 5.0 (लेनी) का संस्करण 2.6.24.4 चला रहा है। मेरा वर्कस्टेशन Core i5 उबंटू 12.04 एलटीएस (सटीक पांगोलिन) चल रहा है।
मेरा समग्र लक्ष्य ROS लिनक्स बॉक्स पर चलाना है। मुझे डेबियन 6.0 (निचोड़) बाइनरी के अंगूठे के समर्थन की आवश्यकता होती है, क्योंकि डेवियन 5.0 (लेनी) के लिए आवश्यक पैकेज उपलब्ध नहीं हैं, इसलिए मुझे एपीटी का उपयोग करने के बजाय स्रोत से संकलन करना होगा। मैंने आवश्यक विभिन्न पुस्तकालयों को स्थापित करने की प्रगति की, लेकिन जब मुझे 1.3.1 कदम उठाने और सीएमके चलाने की कोशिश की गई, तो मुझे त्रुटि मिली
सीएमके 2.8 या उच्चतर आवश्यक है। आप संस्करण 2.6.0
अगला मैंने लिनक्स बॉक्स पर सीएमके 2.8.8 को डाउनलोड और निर्माण करने का प्रयास किया, लेकिन यह सिस्टम के लिए बहुत अधिक था। जब यह असफल रहा, तो मैंने निर्माता की वेबसाइट पर सुझाए गए टूलचेन को डाउनलोड किया और सीएमके एक्जिक्यूटिव बनाने के लिए [www.cmake.org/Wiki/CMake_Cross_Compiling] पर क्रॉस-कंपाइलिंग मार्गदर्शिका का उपयोग किया। /usr/lib/libstdc++.so.6: संस्करण `GLIBCXX_3.4.14
# This one is important
SET(CMAKE_SYSTEM_NAME Linux)
# Specify the cross compiler
SET(CMAKE_C_COMPILER /pathto/crosstool-linux-gcc-4.5.2-gclibc-2.9-oabi/arm-unknown-linux-gnu/bin/arm-unknown-linux-gnu-gcc)
SET(CMAKE_CXX_COMPILER /pathto/crosstool-linux-gcc-4.5.2-gclibc-2.9-oabi/arm-unknown-linux-gnu/bin/arm-unknown-linux-gnu-g++)
# Where is the target environment
SET(CMAKE_FIND_ROOT_PATH /pathto/crosstool-linux-gcc-4.5.2-gclibc-2.9-oabi/arm-unknown-linux-gnu /pathto/crosstool-linux-gcc-4.5.2-gclibc-2.9-oabi/arm-unknown-linux-gnu/arm-unknown-linux-gnu)
# Search for programs in the build host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# For libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
हालांकि, लिनक्स बॉक्स पर द्विआधारी के उपयोग त्रुटि
cmake देता है: यहाँ मेरी toolchain फ़ाइल है 'नहीं मिला (cmake के लिए आवश्यक)
पर्याप्त ज़रूर, पुस्तकालय वहाँ नहीं है:
prompt# strings /usr/lib/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBC_2.3
GLIBC_2.0
GLIBC_2.3.2
GLIBC_2.1
GLIBC_2.1.3
GLIBC_2.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
मैंने पहले कभी संकलित नहीं किया है, लेकिन मैं दो परिदृश्यों में से एक को देख सकता हूं: या तो बाइनरी मेजबान मशीन पर ग्लिबक्स के उच्च संस्करण के लिंक के साथ बनाई गई है या निर्माता का टूलचेन उनकी छवि से अधिक आधुनिक है। मुझे नहीं पता कि यह कैसे हो रहा है या कुछ और हो रहा है, जिसे मैं नहीं जानता।
मेरे पिछले प्रयास स्थिर पार संकलित करने के लिए CMake उम्मीद है कि साथ
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain-technologic.cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXE_LINKER_FLAGS_RELEASE="-static" ..
मैं त्रुटियों का निर्माण हो गया जोड़ने त्रुटि से छुटकारा पाने की कोशिश कर रहा शामिल है, और है कि द्विआधारी या तो काम नहीं किया। मुझे मिल गया:
FATAL: kernel too old
Segmentation fault
मैं लिनक्स बॉक्स पर glibcxx 3.4.14 स्थापित करने की कोशिश करते हैं, लेकिन यह नहीं लगता है जैसे कि यह इस प्रोसेसर के लिए उपलब्ध है।
मैंने सीएमके निर्भरताओं या सिस्टम आवश्यकताओं की खोज करने की कोशिश की है और कुछ भी नहीं मिल रहा है। मैंने सीएमके बनाने के तरीके पर भी खोज की है, लेकिन ज्यादातर खोज सीएमके के निर्माण के बजाय सीएमके के साथ अन्य चीजों को कैसे विकसित करें।
मेरी धारणा यह है कि सेमेक क्रॉस संकलन का समर्थन नहीं करता है क्योंकि इसमें लक्ष्य प्लेटफार्म पर ऑटो-कॉन्फ़िगरेशन परीक्षणों के लिए बाइनरी चलाने के लिए समर्थन शामिल नहीं है। क्या मै गलत हु? – schily