चाहता हूं, मैं एक i686-elf क्रॉस-कंपाइलर का उपयोग कर सिग्विन में एक साझा लाइब्रेरी बनाने की कोशिश कर रहा हूं। कोड बहुत सरल है: सहीजीसीसी एक निष्पादन योग्य ईएलएफ फ़ाइल आउटपुट करता है जब मैं एक साझा लाइब्रेरी
i686-elf-gcc -fPIC -shared -nostdlib core.c -o libcore.so
यह एक साझा वस्तु उत्पादन किया जाना चाहिए,:
int add(int a, int b) {
return a + b;
}
void _init() {
add(3, 4);
}
मैं निम्न आदेश के साथ संकलन कर रहा हूँ? लेकिन जीसीसी _start
प्रतीक खोजने में सक्षम नहीं होने के बारे में एक चेतावनी आउटपुट करता है, जो एक्जिक्यूटिव के लिए प्रवेश बिंदु है, साझा वस्तुओं नहीं। इसके अलावा, readelf
निम्नलिखित कहते हैं:
$ readelf -a libcore.so
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
...
Type: EXEC (Executable file)
...
क्या गलत हो रहा है?
कि महान काम किया है, धन्यवाद। अपने प्रश्न का उत्तर देने के लिए, मैं बूटलोडर पर काम कर रहा हूं जो स्थानांतरित ईएलएफ मॉड्यूल लोड करता है। –