关于 MBP 上链接静态库失败的问题

2023-02-12 05:47:02 +08:00
 jdOY

最近找了个开源的项目,准备编译成静态库自己使用,但是在 M1 的 mac 上链接编译的时候报错了,网上搜了一圈都没有解决方法,来问下有没有大佬遇到过这样的问题。
开源项目是 c 语言开发的,自己开发的代码也是 c,编译器用的 mac 自带的 clang ,项目用 cmake 构建,后面我写了简单的 demo ,直接使用命令行编译也是一样的错误,实在有点想不明白。
错误如下:
Undefined symbols for architecture arm64:
"_main", referenced from:
implicit entry/start for main executable
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)


系统:
CPU: Apple M1 Max
内存: 64G
系统版本: macOS Monterey 12.6 (21G115)

clang 版本:

Apple clang version 14.0.0 (clang-1400.0.29.102)
Target: arm64-apple-darwin21.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

cmake 版本:

cmake version 3.25.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).

Demo 静态库代码:

tt.h

#ifndef DLB_TT_H
#define DLB_TT_H
void hello(void);
#endif //DLB_TT_H

tt.c

#include "tt.h"

#include <stdio.h>

void hello(void)
{
	printf("Hello, I m lj!\n");
}
805 次点击
所在节点    程序员
4 条回复
missdeer
2023-02-12 07:09:00 +08:00
出错信息不是给了吗,缺 main 函数
ysc3839
2023-02-12 13:38:50 +08:00
cmake add_library STATIC
jdOY
2023-02-12 16:00:08 +08:00
@missdeer 应该不是的,调用库的代码是有 main 函数的
jdOY
2023-02-12 16:00:45 +08:00
@ysc3839 在 CMakeLists.txt 里面有加这个

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/915294

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX