gpt4 book ai didi

mysql - 无法在本地机器上运行的服务器上编译程序

转载 作者:搜寻专家 更新时间:2023-10-30 20:43:12 26 4
gpt4 key购买 nike

我有一个项目可以在我的系统上编译和运行,但是当我尝试在服务器上运行它时,它会出现编译时错误。以下是我用来在我的系统上编译它的 Makefile 的一部分:

CC =  gcc
CFLAGS = -g -Wall
COMPLILEFLAGS = `mysql_config --include`
LINKERINFO = `mysql_config --cflags --libs`

exec: main.o
$(CC) $(CFLAGS) -o exec main.o $(LINKERINFO)

main.o: main.c
$(CC) $(CFLAGS) $(COMPLILEFLAGS) -c main.c

当我在服务器上运行相同的文件时,出现以下错误:

gcc -g -Wall -I/usr/include/mysql -c main.c
In file included from main.c:13:
/usr/include/mysql/my_global.h:688: error: redefinition of typedef ‘my_bool’
/usr/include/mysql/mysql.h:55: note: previous declaration of ‘my_bool’ was here
In file included from main.c:13:
/usr/include/mysql/my_global.h:699: error: redefinition of typedef ‘my_socket’
/usr/include/mysql/mysql.h:69: note: previous declaration of ‘my_socket’ was here
In file included from main.c:13:
/usr/include/mysql/my_global.h:1102: error: redefinition of typedef ‘my_ulonglong’
/usr/include/mysql/mysql.h:132: note: previous declaration of ‘my_ulonglong’ was here
In file included from main.c:14:
/usr/include/mysql/my_getopt.h:64: warning: ‘enum loglevel’ declared inside parameter list

main.c 文件是:

#include <stdio.h>
#include <mysql.h>
#include <my_global.h>

int main (void)
{
return 0;
}

任何人都可以提出解决此问题的可能方法。我只想增加这段代码的可移植性。我能想到的一种选择是使文件 compilerlinker 在我的源代码中使用,并将它们用于编译和链接。

顺便说一下,我使用的是 mysql-server 5.5 版并且服务器有 mysql-server 5.3 版

最佳答案

查看 MySQL 的文档我发现 old versions包括一个警告,指出 my_global.h 应该包含在 mysql.h 之前以便在 Windows 上编译。

尝试颠倒包含的顺序,看看是否能解决问题。如果是,将紧急向 MySQL 提交错误。

关于mysql - 无法在本地机器上运行的服务器上编译程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11236433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com