编译 学习过程
.so是linux下的动态库,.a是静态库。
MinGW跨平台编译,从linux源代码(到linux静态库.a)到windows应用程序(.exe)。(在Linux系统(含Mac OS)上为CygWin)。
How to compile C/C++ programs to a exe format - Stack Overflow
gcc参数:
-L添加库目录——-Ldirname,可多次添加。
库目录用于连接过程(ld in linux,ln in VC)。
-l<name>链接具体的函数库name——实际是lib<name>,但-l处约定省略lib。
gcc的-static,优先使用动态库,当不存在时,自动使用静态库,此flag强制使用静态库。
-W(错误显示、处理)、-O(优化)、-o(输出)、-E(生成保留预编译文件),都很简单..
gcc的使用简介与命令行参数说明 - feng..liu - 博客园 (cnblogs.com)
故,srlua编译参数中-llua可知是liblua.a、-lm是libm.a、-dl是libdl.a,其中libm.a是系统级数学库。
可尝试Linux Libraries中的静态库(有多个版本,随意尝试了lua-5.3.4_Linux35_64_lib.tar.gz),但其中只有liblua53.so、liblua53.a。
何况从命名,dl短,应该先尝试搜索libdl.a。
“可以从GNU网站下载glibc的源码,libdl库源于glibc源码的dlfcn目录,其中包含dlopen、dlsym等函数的实现”。
求Linux下的libdl库源码。_百度知道 (baidu.com)、libdl - man pages section 3: Library Interfaces and Headers (oracle.com),比较基础远古的库。
拼凑、组装、组合多个静态库到一个静态库。linux下ar,windows下VS中的lib。
c++ - Linking static libraries to other static libraries - Stack Overflow
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?