用铿锵而不是gcc编译?
我制作了,我正在尝试为它制作一个测试客户端来测试我的Debian软件包。这个测试是在Ubuntu 14.04上进行的 我安装了和它们的依赖项 以下是我的测试程序的来源:用铿锵而不是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
#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在链接时,库必须列在对象文件之后