首页
学习
活动
专区
工具
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,我们可以根据自己需求进行高度定制化项目配置。

78720

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.2K20
  • 【AI白身境】只会用Python?g++,CMake和Makefile了解一下

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

    1.6K20

    程序基本概念

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

    1.1K20

    低级工具——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这些指令是用来对编译代码进行筛选自己编写文件时,大家都会写上这么几行代码(注意看前两行和最后一行)...可执行文件:它包含了一个可以被操作系统创建一个进程来执行之文件。 汇编程序生成实际是第一种类型目标文件。对于后两种还需要其他一些处理方能得到,这个就是链接程序工作了。

    99110

    浅谈Linux动态链接库

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

    9K30

    【linux】gcc makefile

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

    5310

    动态库和静态库

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

    14210

    开篇:预备知识---2

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

    76920

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

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

    15110

    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文件里面将该普通用户进行对应设置

    18610

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

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

    4.7K80

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

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

    1.4K10

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

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

    8510

    第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文件,生成并运行测试用可执行文件

    61830

    【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。

    10000

    Linux编译工具:gcc入门

    所谓本地编译器,是指编译出来程序只能够本地环境进行运行。而gcc编译出来程序能够在其他平台进行运行。例如嵌入式程序可在x86编译,然后arm运行。...汇编器生成是可重定位目标文件,学过操作系统,我们知道,源程序中地址是从0开始,这是一个相对地址,而程序真正在内存中运行地址肯定不是从0开始,而且在编写代码时候也不能知道程序绝对地址,...4. gcc常用选项 来看一下gcc常用选项 选项名 作用 -o 产生目标(.i、.s、.o、可执行文件等) -E 只运行C编译器 -S 告诉编译器产生汇编程序文件后停止编译,产生汇编语言文件拓展名为...使用外部库 使用C语言和其他语言进行程序设计时候,我们需要头文件来提供对常数定义和对系统及库函数调用声明。库文件是一些预先编译函数集合,那些函数都是按照可重用原则编写。...使用库优点在于: 模块化开发 可重用性 可维护性 库又可以分为静态库与动态库: 静态库(.a):程序在编译链接时候把库代码链接到可执行文件中。程序运行时候将不再需要静态库。

    4.7K50

    深入浅出GDB调试器

    但是实际应用中,GDB 更常用来调试CC++程序。虽然说Linux系统下我们可以借助诸多集成开发工具来完成程序编写和调试,但实际,调试C/C++程序一定是直接或者间接使用GDB完成。...编译器那篇文章中已经详细介绍过了); 逻辑错误,这部分错误是指我们程序设计逻辑错误,程序编译通过,但是执行结果并不符合我们预期,这类错误就没有办法依靠GCC编译器去检查了,需要我们自己调试分析...(2)程序运行参数 传递运行参数方式有三种: ① 启动gdb时指定(exe表示可执行文件名,paras表示参数) gdb --args exe paras 我们前面的gdb_test.c编译为g3...,用于包含多个源文件情况,比如可执行文件 test 由 test1.c 和 test2.c 编译而成,可以通过指定文件名来查看 test1.c 或 test2.c 代码。...ulimit -c unlimited 再次查看 shell 限制就能看到,现在 core 限制变为 unlimited 了 我们现在再一次运行刚才 err 可执行文件,就可以看到生成了一个

    17410
    领券