无法编译C库

时间:2017-04-06 22:25:48

标签: c gcc

我正在尝试创建我的第一个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}}

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