其他成功构建期间的C编译器错误

时间:2014-05-17 23:07:00

标签: build shared-libraries packaging vala

我创建了一个库,用于链接我正在处理的前端。图书馆还不完整,但已经足够开始测试我所拥有的。

到目前为止,这是前端唯一的功能:

int main(string[] args)
{
    try
    {
        MCTH.init_lists();
        MCTH.init_names();
    } catch (FileError e) {
        stderr.printf("Error: %s\n", e.message);
    }

    // no errors
    return 0;
}

据我所知,它是库的有效语法(错误和方法在vapi中定义)。但是,当我去构建时,我在C编译器中遇到错误:

valac src/main.vala -o bin/mctradehelp --pkg mctradehelp --pkg libxml-2.0
/tmp/ccdIz2Sn.o: In function `_vala_main':
main.vala.c:(.text+0x27): undefined reference to `mcth_init_lists'
main.vala.c:(.text+0x3f): undefined reference to `file_error_quark'
main.vala.c:(.text+0x11a): undefined reference to `mcth_init_names'
collect2: error: ld returned 1 exit status
error: cc exited with status 256

vapi位于/usr/share/vala/vapi,标题位于/usr/local/include.so位于/usr/local/lib

我是否传递了错误的旗帜,或者是不是在正确的地方?

1 个答案:

答案 0 :(得分:2)

Vala通过使用匹配的pkg-config数据(在本例中为/usr/local/lib/pkgconfig/mctradehelp.pc)为每个包传递编译和链接参数到C编译器。如果该文件不存在,则它不会传递任何args。您可以使用-X -lmctradehelp手动传递它们。