我正在尝试创建我的第一个C库,但我无法编译它。
我试图在Fedora上以这种方式编译它:/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
)的文件:
{{1}}
答案 0 :(得分:4)
首先,必须使用.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
)