Linux Makefile:439:target'的配方;mysql.o';失败

Linux Makefile:439:target'的配方;mysql.o';失败,linux,gcc,operating-system,Linux,Gcc,Operating System,我不是Linux专家,但我正在学习,这里有一个“挑战”:我想将一个古老的C应用程序从Red Hat 9移植到更新版本的Ubuntu/Debian(不幸的是,我没有原始源代码,只有二进制代码)。此应用程序在使用非常旧版本的MySQL(3.23.54a)的虚拟机上运行 在一个初步测试中,我尝试使用一个更新版本的MySQL,但对数据库做了一些小的修改:在修复了“TYPE=MyISAM”、“engine=MyISAM”和“datetime NOT NULL default‘0000-00-00 00:0

我不是Linux专家,但我正在学习,这里有一个“挑战”:我想将一个古老的C应用程序从Red Hat 9移植到更新版本的Ubuntu/Debian(不幸的是,我没有原始源代码,只有二进制代码)。此应用程序在使用非常旧版本的MySQL(3.23.54a)的虚拟机上运行

在一个初步测试中,我尝试使用一个更新版本的MySQL,但对数据库做了一些小的修改:在修复了“TYPE=MyISAM”、“engine=MyISAM”和“datetime NOT NULL default‘0000-00-00 00:00:00’”之后,使用了“CURRENT_TIMESTAMP”。。。我遇到了一个“握手不好”的问题(更不用说应用程序需要一些来自旧版本MySQL的文件才能打开)。所以,第一个问题:唯一的方法是安装较旧的MySQL版本

嗯。。。我尝试使用GCC4.8.5(由apt安装)从源代码安装这个MySQL版本,并使用

和“/lib/libc.so.6节中的“/usr/bin/ld:errno:TLS定义。TBS与…”中的非TLS引用不匹配”添加


这实际上并不是一种“需要”,而是一种对我知识的锻炼(这篇文章也成为了提高我英语技能的机会)。

你应该看看虚拟机。虚拟机应该可以帮助您创建一个在当前环境之上运行的新虚拟环境。您可以根据自己的喜好对虚拟环境进行参数化,而不会影响当前环境。免费虚拟机提供商:


您所需要的只是与要复制的操作系统相对应的虚拟机映像。例如,这里您想要红帽9(来自官方网站)

谢谢您的即时回复。实际上,我有一个运行应用程序的VM,但“有趣的地方”不是这个。如果你没有源代码,你打算如何移植它?我只有编译过的文件。在第一次测试中,我将二进制文件复制到新系统(Ubuntu)上,位置与旧系统(Red Hat)上的位置相同,并使用Qt 3和更高版本的GCC和MySQL运行它(我必须从旧版本复制一些文件,并对数据库进行一些修改以导入它)。程序打开了,但是有bug。有趣。就我所知,那只是一个实验。如果我减少MySQL和GCC的版本,也许我可以运行这个应用程序,不是吗?如果我可以只为这个应用程序使用那些古老的版本呢?如果你只有一个二进制文件,GCC与任何事情都没有任何关系。谢谢!我在想,那很好。但是我需要gcc来安装mysql,对吗?我可以使用最新的gcc版本安装旧的mysql吗?
echo '/* Linuxthreads */' >> /usr/include/pthread.h
#include <errno.h>
Makefile:439: recipe for target 'mysql.o' failed
make[2]: *** [mysql.o] Error 1
make[2]: Leaving directory '/home/user/Downloads/mysql-3.23.54a/client'
Makefile:281: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/user/Downloads/mysql-3.23.54a'
Makefile:223: recipe for target 'all' failed
make: *** [all] Error 2