V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jdOY
V2EX  ›  程序员

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

  •  
  •   jdOY · Feb 12, 2023 · 1192 views
    This topic created in 1170 days ago, the information mentioned may be changed or developed.

    最近找了个开源的项目,准备编译成静态库自己使用,但是在 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");
    }
    
    missdeer
        1
    missdeer  
       Feb 12, 2023 via Android
    出错信息不是给了吗,缺 main 函数
    ysc3839
        2
    ysc3839  
       Feb 12, 2023 via Android
    cmake add_library STATIC
    jdOY
        3
    jdOY  
    OP
       Feb 12, 2023
    @missdeer 应该不是的,调用库的代码是有 main 函数的
    jdOY
        4
    jdOY  
    OP
       Feb 12, 2023
    @ysc3839 在 CMakeLists.txt 里面有加这个
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   994 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 20:12 · PVG 04:12 · LAX 13:12 · JFK 16:12
    ♥ Do have faith in what you're doing.