我的目的是使用我自己的鏈接器腳本鏈接兩個代碼,爲此,我創建了一個簡單的鏈接器腳本(所有來自互聯網的幫助) 這是我的鏈接器腳本, link.lds「ld:找不到lc -ERROR
SECTIONS
{
. = 0x10000;
.text : { *(.text) }
. = 0x8000000;
.data : { *(.data) }
.bss : { *(.bss) }
}
和我的兩個簡單的C代碼如下。 1)l1.c
#include<stdio.h>
extern int a;
int main()
{
printf("%d",a);
return 0;
}
AND 2)l2.c
int a=111;
,我使用的命令有:
gcc -c l1.c l2.c
ld -o output -T link.lds l1.o l2.o -lc
執行上述步驟之後,我會遇到以下錯誤:
ld:cannot find lc
上刪除LC,
undefined reference to printf().
我也使用-L /目錄名稱這把我帶回到民主基金參考printf的錯誤嘗試。
我可以得到一些幫助和指導... PS-我意識到我可能已經在概念上錯誤和/或可能不知道正確的鏈接器執行順序/工作。 同樣的任何幫助將不勝感激。 非常感謝!
這是一些學習GNU ld的練習嗎?如果沒有,只需使用'gcc'進行鏈接,它會爲你做所有的「髒活」。 –
你爲什麼需要自定義腳本?如果目標是簡單地將兩個對象鏈接到可執行文件中,則不需要鏈接器腳本。 -lc錯誤意味着您的libc.a無法在鏈接器搜索路徑中找到。你知道你的系統在哪裏嗎? – SergeyA
我編輯了這個問題。我故意要爲更大的問題語句使用自定義鏈接器腳本。另外,我找到libc.a的路徑,嘗試使用-L/-l添加它,但徒勞無功,它仍會提示「對printf()的未定義引用」錯誤。 –