用铿锵而不是gcc编译?

用铿锵而不是gcc编译?,c,gcc,shared-libraries,clang,ld,C,Gcc,Shared Libraries,Clang,Ld,我制作了,我正在尝试为它制作一个测试客户端来测试我的Debian软件包。这个测试是在Ubuntu 14.04上进行的 我安装了和它们的依赖项 以下是我的测试程序的来源: #include <stdio.h> #include <cquel.h> int main(int argc, char *argv[]) { cq_init(1024, 128); struct dbconn mydb = cq_new_connection(u8"pattstes

我制作了,我正在尝试为它制作一个测试客户端来测试我的Debian软件包。这个测试是在Ubuntu 14.04上进行的

我安装了和它们的依赖项

以下是我的测试程序的来源:

#include <stdio.h>
#include <cquel.h>

int main(int argc, char *argv[])
{
    cq_init(1024, 128);

    struct dbconn mydb = cq_new_connection(u8"pattstest.delwink.com", u8"patts",
            u8"patts", u8"pattsdb");

    struct dlist *users;
    int rc = cq_select_all(mydb, u8"User", &users, u8"");
    if (rc)
        return 2;

    for (size_t i = 0; i < users->fieldc; ++i)
        printf("%s\n", users->fieldnames[i]);

    cq_free_dlist(users);
    return 0;
}
我知道发生了什么事,所以我用叮当声尝试了同样的方法:

$ clang -Wall `pkg-config --cflags --libs cquel` `mysql_config --cflags --libs` -std=c11 main.c
叮当声很好!我运行了我的
a.out
binary,它按预期打印了列标题

为什么gcc无法链接到我的库

编辑:我想检查一下我的
LD\u LIBRARY\u路径
,发现它是空的。但是,将其设置为
/usr/lib/x86_64-linux-gnu
(这是我共享对象的位置)并没有改变gcc的行为。

对于
gcc
,事情的顺序非常重要;你应该使用

   gcc -Wall $(pkg-config --cflags cquel) $(mysql_config --cflags) \
       -std=c11 main.c \
        $(pkg-config --libs cquel) $(mysql_config --libs) 
另请参见&。

有关
gcc
的大量事项顺序;你应该使用

   gcc -Wall $(pkg-config --cflags cquel) $(mysql_config --cflags) \
       -std=c11 main.c \
        $(pkg-config --libs cquel) $(mysql_config --libs) 
另请参见&。

有关
gcc
的大量事项顺序;你应该使用

   gcc -Wall $(pkg-config --cflags cquel) $(mysql_config --cflags) \
       -std=c11 main.c \
        $(pkg-config --libs cquel) $(mysql_config --libs) 
另请参见&。

有关
gcc
的大量事项顺序;你应该使用

   gcc -Wall $(pkg-config --cflags cquel) $(mysql_config --cflags) \
       -std=c11 main.c \
        $(pkg-config --libs cquel) $(mysql_config --libs) 

另请参见&。

检查您的gcc版本。可能已过期。请检查您的gcc版本。可能已过期。请检查您的gcc版本。可能已过期。请检查您的gcc版本。可能已经过时了,这很有效。我知道gcc可能对参数很挑剔,但我一直认为源文件必须放在最后
gcc-Wall-std=c11 main.c`mysql\u config--libs--cflags``pkg config--libs--cflags cquel`
worked.gcc在链接时,必须在对象文件之后列出这些库。我知道gcc可能对参数很挑剔,但我一直认为源文件必须放在最后
gcc-Wall-std=c11 main.c`mysql\u config--libs--cflags``pkg config--libs--cflags cquel`
worked.gcc在链接时,必须在对象文件之后列出这些库。我知道gcc可能对参数很挑剔,但我一直认为源文件必须放在最后
gcc-Wall-std=c11 main.c`mysql\u config--libs--cflags``pkg config--libs--cflags cquel`
worked.gcc在链接时,必须在对象文件之后列出这些库。我知道gcc可能对参数很挑剔,但我一直认为源文件必须放在最后
gcc-Wall-std=c11 main.c`mysql\u config--libs--cflags``pkg config--libs--cflags cquel`
worked.gcc在链接时,库必须列在对象文件之后