我正在尝试创建我的第一个 C 库,但我无法编译它。
我正在尝试在 Fedora: 上以这种方式编译它gcc -o clear.o clear.c
,但出现此错误:
/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
这是我想用作库的文件 ( "clear.c"
):
#ifndef _CLEAR_H_
#define _CLEAR_H_
#ifdef _WIN32
void clearScreen() {
system("cls");
}
#endif
#elif __APPLE__
#include "TargetConditionals.h"
#if TARGET_OS_MAC
void clearScreen() {
system("clear");
}
#else
# error "This Apple platform is not supported"
#endif
#elif __linux__
void clearScreen() {
system("clear");
}
#elif __unix__
void clearScreen() {
system("clear");
}
#elif defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
#include <sys/param.h>
#if defined(BSD)
void clearScreen() {
system("clear");
}
#endif
#endif
首先,.o
必须使用-c
禁用链接器的选项创建作为输出的对象 ( ) 文件。因此,要创建目标文件,请运行gcc -c -o clear.o clear.c
.
接下来,您可能想要创建一个实际的库,而不仅仅是一个目标文件。要创建共享(动态链接)库(最常见),您必须指定该-shared
选项。所以,一旦你制作了目标文件,运行gcc -shared -o libclear.so clear.o
(如果你在 Windows 上,你想要一个.dll
,所以gcc -shared -o libclear.dll clear.o
)。
如果您想要一个静态链接的库,请使用ar
目标文件和.a
扩展名 ( ar rcs libclear.a calc_mean.o
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句