尝试构建共享库g ++ / mac时未定义的符号_main

时间:2009-09-29 19:15:10

标签: c++ macos g++ linker

我正在尝试在mac上构建libdecodeqr。我的c ++构建和链接历史都在windows上,所以这是一个令人兴奋的发现之旅。

我终于到了想要创建链接库的地步。我正在运行的命令是:

g++ -shared -o libdecodeqr.so.0.9.3 bitstream.o codedata.o container.o ecidecoder.o formatinfo.o galois.o imagereader.o libdecodeqr.o -L/opt/local/lib -arch i386 -lcxcore -lcv

结果是:

Undefined symbols:
    "_main", referenced from:
       start in crt1.10.5.o

我的印象是使用-shared标志创建一个库意味着我不需要主函数。源代码中肯定没有。

只是为了踢,我将int(){return 0;}添加到其中一个cpp文件并重建。整个事情编译和链接,但当我尝试将输出用作库时,我得到错误告诉我,我无法链接到主可执行文件。我猜这是有道理的。

我需要传递给g ++以告诉它构建库吗?

1 个答案:

答案 0 :(得分:7)

OSX不支持

-shared。使用-dynamiclib-bundle(取决于您要创建的共享库类型)。