【问题标题】:GCC compile with mysql libraryGCC 用 mysql 库编译
【发布时间】:2013-04-27 20:15:12
【问题描述】:

当我尝试用 C 编译一个包含 mysql 库的自写项目时,我收到此错误:

gcc -c src/oDAO.c
src/oDAO.c:4:23: fatal error: my_global.h: No such file or directory

我将 my_global.h 包括在内:

#include <my_global.h>

出现错误,因为我的系统将头文件复制到 /usr/include/mysql/ 并且 gcc 仅在 /usr/include 中搜索系统头文件(没有子目录)。如何通过添加 /usr/include/mysql 作为附加共享库根来调用 gcc?

这是我的实际 Makefile:

all: main.o oDAO.o FileUtils.o DVDDAO.o
    gcc -Llib -o oDAO main.o oDAO.o FileUtils.o DVDDAO.o -llinkedlist -lncurses `mysql_config --cflags --libs` 

main.o:
    gcc -c src/main.c

oDAO.o:
    gcc -c src/oDAO.c

FileUtils.o:
    gcc -c src/FileUtils.c

DVDDAO.o:
    gcc -c src/DVDDAO.c

clean:
    rm -f *.o
    rm -f oDAO
    rm -f *.bak
    rm -f *.~

【问题讨论】:

  • 您需要使用 mysql_config 来获取正确的编译和链接标志。
  • 有一个开关,我知道...你看过 gcc 的手册页了吗?
  • 说实话:gcc 的手册页太大了,我无法理解所有内容并找到我真正想要的东西......
  • @pausch 开关是 -I 和 -L 我在我的一个 make 文件中找到了它们。

标签: c gcc makefile shared-libraries


【解决方案1】:

我自己有答案:

每次我尝试将包含 mysql 库的 .c 文件编译到目标文件中时,我都必须像这样编译它:

gcc -c DVDDAO.c `mysql_config --cflags`

然后一切正常

【讨论】:

    【解决方案2】:

    尝试使用选项-I 添加包含目录,使用选项-L 添加库目录。

    【讨论】:

      猜你喜欢
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多