首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

运行用1990年可执行文件编写的C代码。现在重新编译,在旧文件上得到读取错误

运行用1990年可执行文件编写的C代码,现在重新编译,在旧文件上得到读取错误可能是由于以下原因之一:

  1. 兼容性问题:由于时间的推移,编译器和操作系统的版本已经发生了变化,可能导致旧的可执行文件无法在当前环境中正确读取。这可能涉及到不同的二进制格式、库文件的变化、系统调用的变化等。解决此问题的一种方法是使用兼容性工具或虚拟机来模拟旧的环境。
  2. 缺失依赖项:旧的可执行文件可能依赖于特定的库文件或其他外部资源,而这些依赖项可能在当前环境中缺失或版本不匹配。在重新编译之前,需要确保所有必要的依赖项都已正确安装,并且版本与旧文件所需的版本相匹配。
  3. 文件损坏:旧的可执行文件可能在传输或存储过程中损坏,导致读取错误。在这种情况下,重新获取原始文件并重新编译可能是解决问题的最佳方法。

总之,重新编译旧的可执行文件时遇到读取错误可能是由于兼容性问题、缺失依赖项或文件损坏等原因导致的。解决此问题的关键是理解旧文件的特定要求,并在当前环境中满足这些要求,以确保正确的编译和运行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

opencv recipe for target all failed解决

若路径不正确,将会导致编译过程中的链接错误。3. 清理并重新编译如果上述步骤都没有解决问题,你可以尝试清理之前生成的编译文件并重新编译。...这有助于解决一些由于编译文件损坏或不完整引起的错误。4. 更新OpenCV版本如果你使用的是较旧的OpenCV版本,可能已知的问题已经在后续版本中得到修复。...它提供了一种简化并标准化跨平台构建过程的方法,可以在多个操作系统上生成各种编译器和构建系统所需的配置文件。 CMake配置是指在使用CMake生成构建文件时所需的设置和参数。...在示例中,设置了C++标准为C++11。 接下来,使用​​add_executable​​命令添加要编译的源文件。在示例中,添加了名为​​main.cpp​​的源文件,用于生成一个可执行文件。...运行生成的构建文件(如make)即可开始编译项目。 通过编写CMakeLists.txt文件并运行CMake,我们可以根据自己的需求进行高度定制化的项目配置。

90920

Golang之go 命令用法

图1.3 Go命令显示详细的信息 这些命令对于我们平时编写的代码非常有用,接下来就让我们了解一些常用的命令。 go build 这个命令主要用于编译代码。...在包的编译过程中,若有必要,会同时编译与之相关联的包。 如果是普通包,就像我们在1.2节中编写的mymath包那样,当你执行go build之后,它不会产生任何文件。...(注:实际上,package名在Go语言规范中指代码中“package”后使用的名称,此名称可以与文件夹名不同。默认生成的可执行文件名是文件夹名。)...-t 同时也下载需要为运行测试所需要的包 -u 强制使用网络去更新包和它的依赖包 -v 显示执行的命令 go install 这个命令在内部实际上分成了两步操作:第一步是生成结果文件(可执行文件或者....go test 执行这个命令,会自动读取源码目录下面名为*_test.go的文件,生成并运行测试用的可执行文件。

5.3K20
  • 【AI白身境】只会用Python?g++,CMake和Makefile了解一下

    下图是test.s文件的一部分。 ? 3.将汇编语言变为目标代码(机器代码) 在终端输入下面代码: g++ -c test.cpp 这一步就是生成目标文件,用编辑器打开就都是二进制机器码。 ?...在这里我们用c++和opencv对图片进行读取和显示,程序保存在DisplayImage.cpp这个文件里,代码如下: #include #include 编写目标文件2:依赖文件2 这一步的依赖文件2实际就是第二步的目标文件1,在第二步我们通过DisplayImage.cpp得到了DisplayImage.o,现在我们需要通过DisplayImage.o...CMake是一个跨平台的编译(Build)工具,可以用简单的语句来描述所有平台的编译过程,其是在make基础上发展而来的,早期的make需要程序员写Makefile文件,进行编译,而现在CMake能够通过对...3.3 编译和运行程序 现在CMakeLists.txt文件已经编写好了,意味着我们的工作即将进入尾声。

    1.7K20

    程序的基本概念

    解释器 /bin/sh 也是由C程序经过编译得到的包含机器指令的可执行文件,它被操作系统加载执行时,它所包含的机器指令指示它做这样的事情:把我们写的脚本 script.sh 当成数据文件读取,理解我们所写的每一行程序的意思...比如上面 a = b + 1; 的例子是在32位x86平台下编译的得到的结果,如果在ARMv4平台上编译则得到完全不同的结果(编译生成的可执行文件也完全不同): 一个语句的三种表示(ARMv4平台)...,就是编译器把源代码分析一遍生成可执行文件,而之后可执行文件在每次执行时就不需要再分析源代码了。...运行时错误 编译器检查不出这类错误,仍然可以生成可执行文件,但在运行时会出错而导致程序崩溃。对于我们接下来的几章将编写的简单程序来说,运行时错误很少见,到了后面的章节你会遇到越来越多的运行时错误。...读者如果用其他Linux发行版,或者不使用发行版提供的软件包而是用自己从源代码编译出的软件包,则编译运行本书的代码得到的结果会有些不同,但不影响学习。

    1.1K20

    浅谈Linux的动态链接库

    上一篇我们分析了Hello World是如何编译的,即使一个非常简单的程序,也需要依赖C标准库和系统库,链接其实就是把其他第三方库和自己源代码生成的二进制目标文件融合在一起的过程。...假如我们自己编写的程序名为Program 1,Program 1中调用了C标准库的printf(),在生成的目标文件中,不会立即确定printf()的具体地址,而是在运行时去装载这个函数,在装载阶段确定...共享库的之间隔离决定了共享库可以进行小版本的代码升级,重新编译并部署到操作系统上,并不影响它被可执行文件调用。...静态链接库的任何函数有了改动,除了静态链接库本身需要重新编译构建,依赖这个函数的所有可执行文件都需要重新编译构建一遍。...Major Version升级后,或者依赖旧Major Version的程序需要更新代码,重新编译,才可以在新的Major Version上运行;或者操作系统保留旧Major Version,使得老程序依然能运行

    9.1K30

    【linux】gcc makefile

    编译(生成汇编) 在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc 把代码翻译成汇编语言。...其后缀名一般为“.a” 动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。...这意味着,运行程序时不需要这些库在系统中存在,因为所有必需的代码都已经包含在单个可执行文件中了。...优点: 独立性:生成的可执行文件不依赖于外部的库文件,因此更易于在没有安装这些库的系统上运行。...向后兼容性:新版本的 glibc 设计时通常会考虑到向后兼容性,使得旧的应用程序仍然可以在新版本的库上运行。

    5910

    低级工具——C语言C++

    编译性语言在程序执行之前,先会通过编译器对程序执行编译的过程,把程序转变为机器语言,也就是可执行文件,运行时就不需要做其他操作了,直接运行即可,这也就是为什么编译性语言运行速度快过解释性语言。...看一下import的源码,会发现在import的时候它会对pyc文件和py文件的最后修改日期进行检查,如果发现py文件的修改日期晚于pyc文件的修改日期,就进行重新编译。...只重新编译这一个模块,其他未修改的模块不会有影响。 C语言/C++是编译性语言 C语言/C++属于典型的编译性语言,而且它们更接近底层,可以直接操控硬件,运行速度当然也是非常快!...条件编译指令 条件编译指令有#ifdef,#ifndef,#elif,#else,#endif这些指令是用来对编译的代码进行筛选的,在自己编写头文件时,大家都会写上这么几行代码(注意看前两行和最后一行)...(3)可执行文件:它包含了一个可以被操作系统创建一个进程来执行之的文件。 汇编程序生成的实际上是第一种类型的目标文件。对于后两种还需要其他的一些处理方能得到,这个就是链接程序的工作了。

    2.1K10

    Python遇见C++碰出的编译火花

    编译性语言在程序执行之前,先会通过编译器对程序执行编译的过程,把程序转变为机器语言,也就是可执行文件,运行时就不需要做其他操作了,直接运行即可,这也就是为什么编译性语言运行速度快过解释性语言。...看一下import的源码,会发现在import的时候它会对pyc文件和py文件的最后修改日期进行检查,如果发现py文件的修改日期晚于pyc文件的修改日期,就进行重新编译。...只重新编译这一个模块,其他未修改的模块不会有影响。 . 3 编译型C++ C语言/C++属于典型的编译性语言,而且它们更接近底层,可以直接操控硬件,运行速度当然也是非常快!...条件编译指令 条件编译指令有#ifdef,#ifndef,#elif,#else,#endif这些指令是用来对编译的代码进行筛选的,在自己编写头文件时,大家都会写上这么几行代码(注意看前两行和最后一行)...可执行文件:它包含了一个可以被操作系统创建一个进程来执行之的文件。 汇编程序生成的实际上是第一种类型的目标文件。对于后两种还需要其他的一些处理方能得到,这个就是链接程序的工作了。

    99510

    开篇:预备知识---2

    你会发现你可以成功的执行编译的前三个步骤:预处理、编译、汇编,在将汇编过程产生的 .o 文件进行链接成可执行文件的时候会得到以下错误信息: ?...如果小伙伴对 Windows 系统接触的多的话,我相信你一定遇见过这种类型的错误。遇见这种错误时通常重新安装程序可以解决。但其本质原因还是因为丢失了某些程序运行时必须的动态链接库文件导致的。...上问提到:使用动态链接库文件时并不是将整个库文件链入可执行程序文件中,而是在可执行文件中存入动态链接库文件的相关信息,以供程序在运行过程中在需要时进行动态链接库文件的加载。...有了 make 工具之后,我们就可以通过编写 makefile 文件来更加灵活的控制程序的编译了,比如当程序的某些源码文件发生更改了之后,我们只需要对这部分源程序生成的可执行文件重新编译即可,无需重新编译整个工程的程序代码...这个结论看似正确,因为你在使用 gcc 编译 C++ 源文件的时候会得到这样的报错信息,而是用 g++ 的时候却可以成功编译得到可执行程序并运行: ?

    77420

    动态库和静态库

    什么是静态库 静态库是在编译时将所有需要的代码集成到可执行文件中的库。静态库是一组目标文件的集合,被打包为一个 .a 文件(例如 libmylib.a)。 2....-lmylib -o main 运行可执行文件: ./main 4. 优缺点 优点: 无需在运行时存在库文件,避免了库版本不兼容的问题。 代码在编译时完全链接,提高运行时性能。...缺点: 可执行文件较大,因为库中的所有代码都被复制到 可执行文件中。 更新库时需要重新编译所有依赖该库的可执行文件。 动态库(Dynamic Library) 1....优缺点 优点: 可执行文件较小,因为代码在运行时动态加载。 更新库无需重新编译所有依赖该库的程序,只需确保新库的接口与旧库兼容。...总结 主要区别 特性 静态库 动态库 文件后缀 .a .so 链接方式 编译时链接 运行时链接 文件大小 相对较大 相对较小 可移植性 依赖库版本 通过接口兼容性提高可移植性 更新 需要重新编译 可以更新库而无需重新编译

    15810

    Linux开发工具——gcc篇

    gcc -E xxx.c -o xxx.i#将原文件进行预处理,为了得到预处理后的文件,我们加上“-o”选项,得到目标文件   创建一个C的源文件:   对该文件进行编写:   将该文件进行预处理得到目标文件...编译(生成汇编)  在这个阶段中,gcc首先要检查代码的规范性、是否有语法错误等,以确定代码实际要做的工作,在检查无误后,gcc把代码翻译为汇编语言。  ...gcc -S xxx.i -o xxx.s#将-i目标文件进行编译生成汇编代码,用-o选项将.s文件保存   将-i文件编译为.s文件:   使用vim来查看.s的汇编代码: 汇编(生成机器可识别代码)...动态库与之相反,在编译链接过程中没有把代码加入到可执行文件当中,而是在程序执行时由运行时 链接文件加载库,这样可以 节省系统的开销。...一般我们编译C语言的代码直接使用: gcc xxx.c -o 运行程序文件名#编译出来直接得到可执行程序 ✈️ 总结 普通用户想要进行sudo操作,需要root账号在sudoers文件里面将该普通用户进行对应的设置

    19710

    以问答的方式解释编译器与解释器

    链接(Linking):在生成了目标文件之后,编译器会将它们链接成一个可执行文件或库文件。链接器会处理目标文件之间的依赖关系,确保程序可以正确地运行。 详细见 B站视频【基地译制】电脑如何读懂代码?...编写源代码:使用任何文本编辑器编写源代码,源代码是用高级编程语言编写的程序。 编译源代码:将源代码编译成目标代码或中间代码。编译器将源代码转换为机器码,这是计算机可以直接执行的代码。...解释器与编译器 解释器与编译器有什么区别? 解释器和编译器在处理源代码和执行程序的方式上存在明显的区别。 解释器逐行读取源代码并立即执行,不需要先将整个源代码转换成目标代码。...5.当程序中出现错误时,编译器会停止翻译,在删除错误后重新翻译整个程序,而解释器中发生错误时,它会阻止其翻译,在删除错误后,翻译将继续。 总的来说,解释器和编译器的选择取决于具体的编程需求和语言特性。...跨平台性:解释器使得程序可以在不同的操作系统上运行,只要该系统提供了相应的解释器。 缺点 代码修改后需要重新编译:当源代码发生变化时,程序员需要重新编译整个程序以生成新的目标代码。

    19410

    .configure、make、make install 命令详解一、基本信息二、详细解释

    2、make 这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。...如果 在 make 过程中出现 error ,你就要记下错误代码(注意不仅仅是最后一行),然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址),或者你的系统少了一些依赖库等...,这些需要自己仔细研究错误代码。...如果原始码编译无误,且执行结果正确,便可以把程序安装至系统预设的可执行文件存放路径。如果用bin_PROGRAMS宏的话,程序会被安装至/usr/local/bin这个目录。...这个检查非常有用,检查过关的包,基本上可以给任何一个具备GNU开发环境-的人去重新编译。

    5.2K80

    Go 静态编译及在构建 docker 镜像时的应用

    Go 语言具有跨平台和可移植的特点,同时还支持交叉编译,可以在一个系统上编译出运行在另一个系统上的二进制可执行文件,这是因为 Go 在编译时支持将依赖的库文件与源代码一起编译链接到二进制文件中,所以在实际运行时不再需要依赖运行环境中的库...静态链接库也有一些缺点,首先是静态链接库是在编译链接过程中被复制到可执行文件中的,当静态链接库有更新时,应用程序必须重新执行编译链接得到新的可执行文件。...使用链接库 使用静态链接库 下面用 C 语言编写两个函数,并分别生成静态链接库和动态链接库,最后在另一个程序中使用生成的链接库。...得到动态链接库 libvector.so,之后编译链接生成可执行文件 得到可执行文件 prog2l 并运行 创建完可执行文件后,其实并没有任何 libvector.so 的代码和数据节真的被复制到可执行文件...C 语言的目标文件,之后再编译 Go 代码得到 Go 语言的目标文件,最终将 Go 和 C 目标文件通过链接器链接到一起得到最终的可执行文件。

    11510

    计算机基础系列:源代码如何被计算机执行

    编译型语言需要使用编译器经过编译和连接生成可执行文件,解释型语言需要使用解释器解释源代码。解释型语言更容易上手,但是运行速度更慢,必要时要使用C/C++重写或使用JIT技术加速。...可执行文件就是二进制机器语言的集合,可以被机器执行,得到我们想要的结果。...另外,代码中使用了库函数printf,当我们使用别人写好的函数时,需要将这些前人写好的库函数连接到我们的可执行文件中,否则有调用函数失败的错误。我们将这种需要编译的语言称为编译型语言。...比如我自己编写了多个文件,文件1会被文件2调用,所以要先编译文件1,后编译文件2,否则会因为顺序颠倒而报错;还比如编译型语言对所以依赖的库函数非常挑剔,如果版本过低,有可能出现编译错误。...JIT把需要加速的代码编译成了机器语言,不再需要“同声传译”拖累自己了。我在Python上用numba库进行过JIT测试,同样的代码会有8倍以上的速度提升。

    1.5K10

    【Rust学习】01_入门

    您还需要一个链接器,这是 Rust 用来将其编译输出合并到一个文件中的程序。您可能已经有一个。如果遇到链接器错误,则应安装 C 编译器,该编译器通常包含链接器。...C 编译器也很有用,因为一些常见的 Rust 包依赖于 C 代码,需要 C 编译器。...在 macOS 上,您可以通过运行以下命令来获取 C 编译器:$ xcode-select --installLinux 用户通常应该根据其发行版的文档安装 GCC 或 Clang。...这将显示扩展名为 .rs 的源代码文件、可执行文件(在 Windows 上main.exe,但在所有其他平台上都是主要文件),以及在使用 Windows 时显示包含扩展名为 .pdb 的调试信息的文件。...如果您看到错误,例如 command not found ,请查看安装方法的文档,尝试重新安装rust。

    12000

    第9节 Go的执行原理以及Go命令

    现在答案就很明显了: 命令源码文件是可以单独运行的。可以使用 go run 命令直接运行,也可以通过 go build 或 go install 命令得到相应的可执行文件。...举个栗子: 比如平时我们在 LeetCode 上刷算法题,这时候写的就是一个程序,这就是命令源码文件,可以在电脑的任意一个文件夹新建一个 go 文件就可以开始刷题了,写完就可以运行,对比执行结果,答案对了就可以提交代码...在详细分析这4个命令之前,先罗列一下通用的命令标记,以下这些命令都可适用的: 名称 说明 -a 用于强制重新编译所有涉及的 Go 语言代码包(包括 Go 语言标准库中的代码包),即使它们已经是最新的了。...go install 命令在内部实际上分成了两步操作:第一步是生成结果文件(可执行文件或者.a包),第二步会把编译好的结果移到 $GOPATH/pkg或者 $GOPATH/bin。...go test go test 命令,会自动读取源码目录下面名为*_test.go的文件,生成并运行测试用的可执行文件。

    62430

    Visual Studio 中的 MD 与 MT、动态库与静态库的深入解析

    更新方式:静态库更新时需要重新编译程序,因为静态库的代码已经嵌入到可执行文件中,库的更新会导致可执行文件中的代码也需要更新;而动态库更新只需替换 DLL,由于可执行文件是在运行时加载动态库,所以只需要替换相应的动态库文件即可...,无需重新编译可执行文件。...在 Visual Studio 的项目属性中,找到 C/C++ 配置下的代码生成选项,然后在运行时库下拉菜单中选择与 gRPC 库一致的运行时库选项。清理并重建项目,确保无旧文件干扰。...在修改了运行时库选项后,清理项目可以删除之前编译生成的中间文件和可执行文件,然后重新构建项目,确保项目是按照新的运行时库选项进行编译和链接的。验证:重新链接后,确认错误消失。...在项目重新构建完成后,运行项目,检查是否还会出现“无法解析的外部符号”的错误,如果错误消失,说明问题已经得到解决。3.3 经验教训依赖检查:在使用第三方库时,一定要确认其运行时库配置与项目一致。

    14110

    Nginx快速入门与配置文件结构详解

    Nginx是一个主和几个工作进程;工作进程在非特权用户下运行。Nginx可以灵活配置, 重新配置和升级可执行文件,而不会中断客户端服务。...Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。...conf html logs sbinNginx的配置文件存放于conf/nginx.conf,bin文件是位于sbin目录下的nginx文件,logs是存放的启动日志、错误日志、运行日志等。...则表示 Nginx 已经安装并运行成功:五、启动、停止和重新加载 Nginx 配置要启动 nginx,请运行可执行文件。 当 nginx 启动后,可以通过使用-s 参数调用可执行文件来控制它。...老工作进程,接收关闭命令,停止接受新连接,并继续维护当前请求,直到所有这些请求得到维护。 之后,旧的工作进程退出。

    37700
    领券