[英]Error during the linking to object file
我有兩個簡單的源文件:main.c
void main(){
print_hello();
}
你好ç
#include<stdio.h>
void print_hello(){
printf("Hellow world \n");
}
用bash命令編譯后:
gcc -c hello.c
gcc -c main.c
沒關系。 為什么當我們鍵入gcc -o hello.o main.o
時發生錯誤:
main.o
main.o: In function `main':
main.c:(.text+0x7): undefined reference to `print_hello'
collect2: error: ld returned 1 exit status
但是gcc -o hello hello.o main.o
正常嗎?
gcc -o hello.o main.o
意思是:“通過鏈接后續文件( main.o
)輸出可執行文件hello.o
”。
gcc -o hello hello.o main.o
意思是:“通過鏈接后續文件( hello.o
和main.o
)來輸出可執行文件hello
”。
麻煩的是,您試圖僅通過main.o
創建一個名為hello.o
的程序; 幸運的是,它沒有用。 -o
之后的參數是輸出(程序)的名稱。 您需要使用類似:
gcc -o hello hello.o main.o
要么
gcc -o hello main.o hello.o
這些指定將程序稱為hello
並鏈接兩個目標文件。 再一次,您可以運行:
gcc main.o hello.o
這將創建一個名為a.out
的程序。
嚴格地,您應該在main.c
聲明print_hello()
,最好通過兩個源文件都使用的頭文件來聲明。 但是,這是一種改進,您可以在創建程序后對其進行修復。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.