C++ 共享库对main的未定义引用

C++ 共享库对main的未定义引用,c++,shared-libraries,main,C++,Shared Libraries,Main,我正在尝试构建一个标准的box共享库(在ubuntu上使用code::blocks 13.12),它显然没有主函数,因为在windows上编译得非常好。我得到了一堆重新定位错误+对main的未定义引用 有什么建议吗?我在下面粘贴了输出 干杯, 迈克 链接命令缺少链接共享库所需的-shared标志 不幸的是,生成系统没有打印失败的link命令 错误被简单地再现如下: echo "int foo() { return 0; }" | gcc -xc - /usr/bin/ld: /usr/lib/

我正在尝试构建一个标准的box共享库(在ubuntu上使用code::blocks 13.12),它显然没有主函数,因为在windows上编译得非常好。我得到了一堆重新定位错误+对main的未定义引用

有什么建议吗?我在下面粘贴了输出

干杯, 迈克


链接命令缺少链接共享库所需的
-shared
标志

不幸的是,生成系统没有打印失败的link命令

错误被简单地再现如下:

echo "int foo() { return 0; }" | gcc -xc -

/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11
...
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status

我以前曾多次遇到过这个错误,我通常会通过从项目中删除所有文件、在删除所有项目元文件之前删除所有对象文件、关闭code::blocks、重新打开code::blocks并递归读取所有文件来修复它,这通常会修复它,但工作量很大。不用说,这是code::blocks中的一个bug。但是,这也可能是您正在使用的库的错误。它在Cmake文件中工作正常,因此我怀疑是code::blocksI在链接器设置中添加了-shared标志,但运气不佳。@Mike“我添加了…”可能是您将其添加到了错误的位置,也可能是错误已更改。您的第一步应该是找出您正在执行的实际链接命令。我99.9%确定它没有
-shared
。我在找出在code::blocks中添加这个的位置时遇到了一些问题。供下一个读者参考:它位于其他构建选项->其他选项(编译器标志右侧)下
echo "int foo() { return 0; }" | gcc -xc -

/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11
...
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status