-shared和-bundle gcc标志之间有什么区别

-shared和-bundle gcc标志之间有什么区别,gcc,compiler-construction,darwin,Gcc,Compiler Construction,Darwin,我有一个名为abc的小型C程序,它在内部使用dlopen动态加载和运行共享库libabc。libabc声明一个在运行时动态加载和调用的函数。当我使用以下两种方法编译和运行时,结果是一样的。创建共享对象(.so)C库时,GCC编译器上的-shared和-bundle标志有什么区别 方法1 方法2 使用Darwin gcc 4.2如果不使用-bundle,则生成的共享对象在dlopen()后不能使用dlclose()再次卸载;它将在进程的整个生命周期中保留在内存中-bundle生成MH_bundle

我有一个名为abc的小型C程序,它在内部使用dlopen动态加载和运行共享库libabc。libabc声明一个在运行时动态加载和调用的函数。当我使用以下两种方法编译和运行时,结果是一样的。创建共享对象(.so)C库时,GCC编译器上的-shared和-bundle标志有什么区别

方法1 方法2
使用Darwin gcc 4.2

如果不使用
-bundle
,则生成的共享对象在dlopen()后不能使用dlclose()再次卸载;它将在进程的整个生命周期中保留在内存中<代码>-bundle生成MH_bundle类型的文件


顺便说一句,bundle的推荐(但不是强制)扩展名是
.bundle
,而不是
。因此

bundle
选项是特定于达尔文的。
cc -c libabc.c -o libabc.o
cc **-shared** -o libabc.so libabc.o
cc -Wall -g abc.c -ldl -o abc
./abc ./libabc.so greeting "Hello World"
cc -c libabc.c -o libabc.o
cc **-bundle** -o libabc.so libabc.o
cc -Wall -g abc.c -ldl -o abc
./abc ./libabc.so greeting "Hello World"