2010-08-08 6 views
7

मैं अपने ओएस के लिए न्यूलिब पोर्ट करने की कोशिश कर रहा हूं (मैं इस ट्यूटोरियल का अनुसरण कर रहा हूं: http://wiki.osdev.org/Porting_Newlib), और मेरे कुछ प्रश्न हैं।मेरे ओएस के लिए पोर्टिंग न्यूलिब: कुछ प्रश्न

  • एक बार लिब्लॉस किया जाता है और संकलित किया जाता है, जब मुझे वास्तव में libnosys.a का उपयोग करना होगा? क्या यह मेरा मुख्य.c संकलित करेगा?

    mipsel-uknown-elf-gcc main.c -Llibnosys.a` 
    
  • मेरा crt0.c किया गया है। और मुझे इसे "पहली वस्तु के रूप में लिंक करना होगा"। मैं उसे कैसे कर सकता हूँ? क्या यह ऐसा कुछ है?

    mipsel-uknown-elf-ld crt0.o main.o 
    

अपने जवाब के लिए धन्यवाद!

उत्तर

1

पहली ऑब्जेक्ट के रूप में लिंक करना ठीक उसी तरह काम कर सकता है जैसे आप प्रदर्शित कर रहे हैं, लेकिन दस्तावेज़ एक लिंकर स्क्रिप्ट का उपयोग करके उल्लेख करते हैं और crt0.o को STARTUP() के रूप में जोड़ते हैं - मैं लिंकर स्क्रिप्ट से बहुत परिचित नहीं हूं, लेकिन आप जोड़ने स्क्रिप्ट के

सिंटेक्स:: डिफ़ॉल्ट लिंकर स्क्रिप्ट पा सकते हैं और संभवतः इसे बनाने/इसे समायोजित http://wiki.osdev.org/Linker_Scripts

http://sourceware.org/binutils/docs-2.19/ld/Scripts.html#Scripts

The linker always uses a linker script. If you do not supply one yourself, the linker 
will use a default script that is compiled into the linker executable. You can use the 
`--verbose' command line option to display the default linker script. Certain command 
line options, such as `-r' or `-N', will affect the default linker script. 

ही शायद वें अन्य प्रणाली पुस्तकालयों के साथ किया जा सकता है हमेशा लिंकिंग का हिस्सा बनना होगा।

कमांड लाइन पर सभी जोड़ना ठीक है, लेकिन अंत में थोड़ा कठिन है।

क्या आप कोई पूछताछ या गलत परिणाम प्राप्त कर रहे हैं क्योंकि आप पूछ रहे हैं या क्या?

संबंधित मुद्दे