x86

2011-01-20 16 views
10

से एमआईपीएस राउटर के लिए क्रॉस संकलन मेरा अंतिम लक्ष्य मेरे पुराने एक्शनटेक मॉडेम/राउटर के लिए वायरलेस टूल्स को संकलित करना है ताकि मैं इसे ईथरनेट पुल के लिए वायरलेस के रूप में कॉन्फ़िगर कर सकूं। वर्तमान में यह वायरलेस विशेषताएं हैं (प्रतीत होता है) उसी बाइनरी द्वारा नियंत्रित होती हैं जो अधिकांश वेब इंटरफ़ेस का प्रबंधन करती है, लेकिन ऐसा प्रतीत होता है कि उन्होंने पुस्तकालय वायरलेस उपकरण का उपयोग कम से कम कुछ कार्यक्षमता के लिए आंतरिक रूप से उपयोग किया है।x86

मैंने कभी भी एक अलग सीपीयू आर्किटेक्चर के लिए संकलित नहीं किया है और यह सुनिश्चित नहीं किया कि मुझे पूरी तरह से पहचान करने की आवश्यकता है। मैं uClibc का उपयोग करने की कोशिश कर रहा हूं क्योंकि यह शेष सिस्टम में उपयोग किया जाता है, लेकिन मुझे यकीन नहीं है कि मॉडेम पर्यावरण के लिए buildroot को कॉन्फ़िगर कैसे करें। मैंने best guess बनाया है कि कॉन्फ़िगरेशन नीचे की प्रक्रिया से जानकारी के आधार पर क्या होना चाहिए, लेकिन सरल सी एप्लिकेशन के बाद से कुछ गलत है जो केवल इसके साथ संकलित 0 लौटाता है ठीक से चलाने में विफल रहता है।

# cat /proc/version 
Linux version 2.4.17_mvl21-malta-mips_fp_le ([email protected]) (gcc version 2.95.3 20010315 (release/MontaVista)) #1 Thu Apr 21 18:04:37 PDT 2005 
# cat /proc/cpuinfo 
processor    : 0 
cpu model    : MIPS 4KEc V4.8 
BogoMIPS    : 149.91 
wait instruction  : no 
microsecond timers  : yes 
extra interrupt vector : yes 
hardware watchpoint  : yes 
VCED exceptions   : not available 
VCEI exceptions   : not available 
+0

MIPS प्रणाली और उस पर कार्यकारी ** फ़ाइल ** पर किसी भी द्विआधारी आवेदन का पता लगाएँ और हमारे साथ उत्पादन का हिस्सा – karlphillip

+0

ठीक है, सिस्टम से एक निष्पादन के लिए फ़ाइल का आउटपुट है: ELF 32-बिट LSB निष्पादन , एमआईपीएस, एमआईपीएस -1 संस्करण 1 (एसवाईएसवी), गतिशील रूप से जुड़े (साझा libs का उपयोग करता है), छीन लिया अब तक आपकी सभी मदद के लिए धन्यवाद। – sagenite

+0

संभावित डुप्लिकेट [क्या सी को एमआईपीएस में परिवर्तित करने के लिए जीसीसी का उपयोग करने का कोई तरीका है?] (Http://stackoverflow.com/questions/4175450/is-there-a-way-to-use-gcc-to-convert- सी-टू-मिप्स) – user2284570

उत्तर

9

आप ठीक कह रहे हैं, तो आप के लिए एक उचित MIPS toolchain जरूरत है आपके आवेदन पार संकलन और Buildroot ऐसा कर सकते हैं। लेकिन आपको buildroot के menuconfig विकल्पों को ट्विक करने की आवश्यकता हो सकती है। file के आउटपुट के आधार पर, आपके विकल्प बदल सकते हैं। अपने सिस्टम पर, द्विआधारी क्षुधा निम्नलिखित सूचित:

ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV)

ये विकल्प मैं अपने Buildroot के menuconfig लिए सक्षम हैं:

Target Architecture (mips) ---> 
Target Architecture Variant (mips 32r2) --->                
Target ABI (o32) --->                     
Target options --->                      
Build options ---> 
    (/opt/cross-mips-buildroot) Toolchain and header file location?                     
Toolchain --->   
    Toolchain type (Buildroot toolchain) ---> 
    Kernel Headers (Linux 2.6.34.x kernel headers) ---> 
    uClibc C library Version (uClibc 0.9.31.x) ---> 
    [*] Build/install a shared libgcc? 
    [*] Enable compiler tls support  
    [*] Build gdb debugger for the Target 
    [*] Build gdb server for the Target 
    [*] Build gdb for the Host 
     GDB debugger Version (gdb 6.8) ---> 
    [*] Enable large file (files > 2 GB) support? 
    [*] Enable WCHAR support 
    [*] Use software floating point by default 
    [*] Enable stack protection support 
    [*] Build/install c++ compiler and libstdc++? 
    [*] Include target utils in cross toolchain 
Package Selection for the target ---> 
    [*] BusyBox 
    [*] Run BusyBox's own full installation 
    Libraries ---> 
     Networking ---> 
      [*] libcurl 
     Text and terminal handling ---> 
      [*] icu 
      -*- ncurses  
Target filesystem options --->                   
Bootloaders --->                       
Kernel ---> 

toolchain ही पर स्थापित किया गया है/opt/पार mips-buildroot। आप एक सरल हैलो दुनिया आवेदन संकलन और आप MIPS प्रणाली के अंदर चला सकते हैं, तो देखने के लिए /opt/पार MIPS-buildroot/usr/bin/

कोशिश पर संकलक और अन्य उपकरणों पा सकते हैं।

नोट: यह कॉन्फ़िगरेशन एक C++ कंपाइलर नहीं बनाएगा। यदि आपको इसकी आवश्यकता है, तो आप grep LIBSTDCPP .config देख सकते हैं और जांच सकते हैं कि यह सक्षम है या नहीं और इसे अपनी पसंद में बदल दें। ऐसा करने के लिए make menuconfig

+0

@ नाइटफ्लाई 1 9 शायद आप * लक्ष्य आर्किटेक्चर संस्करण * को बदलना चाहते हैं क्योंकि आपका रिलीज 1 है, नहीं 2. – karlphillip

+1

धन्यवाद !! आपने टूलचैन काम करने के लिए आवश्यक सभी सहायता प्रदान की।मेरी कॉन्फ़िगरेशन भी इसी तरह की स्थिति के साथ इस प्रश्न का पालन करने के लिए थोड़ी प्यारी साबित हुई, इसलिए आर्किटेक्चर को मिप्सेल होने की आवश्यकता थी। – sagenite