ld 返回 1 退出状态 - c 文件结构
ld returned 1 exit status - c file structure
我正在编辑一个开源 C 项目以根据我的使用对其进行自定义。基本上它具有以下文件结构:
|--- /include ----- loremipsum.h
|
/loremipsum ----- |--- /ex ----- loremipsum.c and more
|
|--- /src ----- other helpful functions
在 loremipsum.h 中可以通过
找到 /src 中定义的函数列表
#ifdef __cplusplus
extern "C" {
#endif
但这还没有被我编辑,所以我想它应该可以。
在loremipsum.c中有:
- #include“loremipsum.h”
- 很多
extern void function_defined_in_ex()
(1)
- 更多定义。
- 主要
编辑 c 文件并尝试通过
重新创建新的 exe 文件后
$ gcc loremipsum.c -o customloremipsum.exe
首先我得到一个错误,找不到 loremipsum.h,所以我将包含更改为“path/to/include/loremipsum.h”,我在所有包含该包含的 .c 文件中都这样做了。
那么,所有的(1)都出错了,即
“/usr/lib/gcc/x86_64-pc-cygwin/9.3.0/../../../../x86_64-pc-cygwin/bin/ld: /tmp/ccBt2CkE.o:loremipsum.c:(.text+0x3745): 未定义引用function_defined_in_ex'
ld 返回了 1 个退出状态”。
我真的想不通,为什么。
我觉得第一个include错误已经很奇怪了,按照我的理解,找到.h文件应该没有问题。另外,我不知道如何弄清楚在哪里可以找到 (1).
中的函数
很抱歉这么久post,我只是害怕,我忘记了一些基本的东西。
我正在研究 Windows 10 并在 Cygwin shell 中编译。
感谢您的帮助。
您需要使用 -I
参数告诉编译器在哪里寻找包含文件,例如:
gcc -I../include loremipsum.c -o customloremipsum.exe
不要在 #include
行中指定完整路径。
您获得的任何未定义引用都是由链接器引起的,因为 .c
定义符号的文件或对象或库尚未编译。
此外,最好将编译和链接步骤分开,以帮助您解决问题。像这样:
gcc -c -I../include loremipsum.c -o customloremipsum.o
gcc customloremipsum.o -o customloremipsum.exe
我正在编辑一个开源 C 项目以根据我的使用对其进行自定义。基本上它具有以下文件结构:
|--- /include ----- loremipsum.h
|
/loremipsum ----- |--- /ex ----- loremipsum.c and more
|
|--- /src ----- other helpful functions
在 loremipsum.h 中可以通过
找到 /src 中定义的函数列表#ifdef __cplusplus
extern "C" {
#endif
但这还没有被我编辑,所以我想它应该可以。
在loremipsum.c中有:
- #include“loremipsum.h”
- 很多
extern void function_defined_in_ex()
(1) - 更多定义。
- 主要
编辑 c 文件并尝试通过
重新创建新的 exe 文件后$ gcc loremipsum.c -o customloremipsum.exe
首先我得到一个错误,找不到 loremipsum.h,所以我将包含更改为“path/to/include/loremipsum.h”,我在所有包含该包含的 .c 文件中都这样做了。
那么,所有的(1)都出错了,即 “/usr/lib/gcc/x86_64-pc-cygwin/9.3.0/../../../../x86_64-pc-cygwin/bin/ld: /tmp/ccBt2CkE.o:loremipsum.c:(.text+0x3745): 未定义引用function_defined_in_ex' ld 返回了 1 个退出状态”。 我真的想不通,为什么。
我觉得第一个include错误已经很奇怪了,按照我的理解,找到.h文件应该没有问题。另外,我不知道如何弄清楚在哪里可以找到 (1).
中的函数很抱歉这么久post,我只是害怕,我忘记了一些基本的东西。
我正在研究 Windows 10 并在 Cygwin shell 中编译。 感谢您的帮助。
您需要使用 -I
参数告诉编译器在哪里寻找包含文件,例如:
gcc -I../include loremipsum.c -o customloremipsum.exe
不要在 #include
行中指定完整路径。
您获得的任何未定义引用都是由链接器引起的,因为 .c
定义符号的文件或对象或库尚未编译。
此外,最好将编译和链接步骤分开,以帮助您解决问题。像这样:
gcc -c -I../include loremipsum.c -o customloremipsum.o
gcc customloremipsum.o -o customloremipsum.exe