簡體   English   中英

鏈接到目標文件時出錯

[英]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.omain.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM