代码中有main函数,链接的一个库(静态或动态库)中也有main函数,成功生成了可执行文件,执行时执行的是代码中的main函数,而不是库中的,这个有什么规定吗?为什么链接时不报重复定义main的错呢?
// main.cpp
#include <iostream>
int main()
{
std::cout << "I am main in main program" << std::endl;
return 0;
}
// libaaa.cpp
#include <iostream>
int main()
{
std::cout << "I am main in library" << std::endl;
return 0;
}
// 脚本
export LD_LIBRARY_PATH=.
g++ -fPIC -c libaaa.cpp -o libaaa.o
g++ -shared -o libaaa.so libaaa.o
ar -r libaaa.a libaaa.o
g++ -c main.cpp -o main.o
g++ main.o -L. -laaa -o main_dll
g++ main.o libaaa.a -o main_static
./main_dll
./main_static
最后两个程序执行都输出
I am main in main program
--
FROM 117.107.131.*