在Cygwin

时间:2018-08-22 13:16:46

标签: c linker cygwin

我将主要是一个非常中央的库(有点像libc扩展库)从Linux移植到Cygwin,并且由于我有很多设置和拆卸步骤,并且由于我不想使用ctor / dtor属性,因此出于对tcc兼容性的考虑,我的库提供了一个main函数,并且用户应该使用由库中的main函数调用的“ my_main”函数。

它在Linux上运行良好,但在Cygwin上,出现链接器错误。

这是用于构建库的MCVE:

#!/bin/sh -eu
cat > libmain.c <<EOF
#include <stdio.h>
long my_main(int, char**);
int main(int C, char**V)
{

        int r = 0;
        puts("setup");
        if(0>my_main(C,V))
                r=-1;
        puts("teardown");
        return r;
}
EOF
gcc -shared -fpic -o libmain.so  libmain.c -Wl,--allow-shlib-undefined

以上内容适用于Linux,但在Cygwin上,我得到:

/tmp/cc0s6qei.o:libmain.c:(.text+0x32): undefined reference to `my_main'
/tmp/cc0s6qei.o:libmain.c:(.text+0x32): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `my_main'
collect2: error: ld returned 1 exit status

这可以在Cygwin上使用吗?

0 个答案:

没有答案