编译 学习过程

.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

原文地址:https://www.cnblogs.com/RobertL/p/15059627.html