标签:代码执行 成功 调试 编译 osi pip dem 一起 static
编译(compile):将.c或.cpp文件编译成.o(linux)或者.obj(windows)文件,也称为中间目标文件
链接(link):将.o或.obj链接成可执行文件,windows下是.exe结尾,Linux没有限制,一般不带有后缀名
库文件:大型项目编译时生成的目标文件太多,主要是给中间目标文件打包
静态 => .a .lib,在链接时生成执行文件
动态 => .so .dll,由执行文件运行时加载
gcc xxx.c,编译成功后默认生成a.out执行文件 => ./a.out
gcc xxx.c -o demo 或 gcc -o demo xxx.c
gcc xxx.o -o demo
gcc xxx.c -S demo.s
gcc xxx.i -o demo
Mac下编译lua动态库,需要加上-dynamiclib -Wl,-undefined,dynamic_lookup,如编译ding.c,以下为Makefile里面文件内容:
linux:
#默认头文件头文件地址/usr/local/include
gcc ding.c -fPIC -shared -o ding.so
macosx:
gcc ding.c -fPIC -dynamiclib -Wl,-undefined,dynamic_lookup -shared -o ding.so -I/usr/local/include/lua
以上两者都能使部分函数自动inline。项目应该追求在O2的优化下能编译通过,如果在全局优化下,针对局部避免优化,可以尝试使用noinline 或 __attribute__((optimize(“O0”)))来修饰函数。
标签:代码执行 成功 调试 编译 osi pip dem 一起 static
原文地址:https://www.cnblogs.com/Lucky-qin2013/p/11108465.html