Articles of 可执行文件

可执行while循环:没有这样的文件或目录

我想写一个简单的bash脚本迭代可执行文件的input参数。 有问题的文件有两个参数。 以下脚本工作,在包含.sh文件和.exe文件的目录中运行terminal: #!bin/bash ./exec 1000 1 但是,以下不: #!bin/bash n=1 while [ $n -le 50 ] do ./exec 1000 $n n=$(( n+1 )) done 而是返回错误 script.sh:第5行:./exec 1000 1:没有这样的文件或目录 script.sh:第5行:./exec 1000 2:没有这样的文件或目录 等等。 这意味着循环正在发生,但我不明白为什么突然找不到可执行文件。 我正在运行Ubuntu 14.04。

可执行文件是机器码 – 为硬件?

这里是来自Wiki。 “在计算中,可执行文件使计算机”根据编码的指令执行指定的任务“(机器码?) “现代操作系统保留了对计算机资源的控制权,要求个别程序通过系统调用来访问特权资源。由于每个操作系统系列都具有自己的系统调用架构,所以可执行文件通常与特定的操作系统绑定。 那么这是我的观点。 可执行文件不能是机器代码,因为它们需要到硬件服务(系统调用)的操作系统,因此可执行文件还不是“机器代码”…也许这就像代码的一部分是实际的机器代码和一些部分是只是为了调用embedded在操作系统中的机器代码? 总的来说,它包含了机器代码的一些垃圾,以及一些调用操作系统的代码。 在Damon的答案后编辑:最后,OS是一组机器码。 基本上OS会做粘贴用户机器代码(由C编译器创build)的工作,然后如果指令是系统调用,则转移到OS存储器区域进行处理。 现在问题是在C中生成的机器码可以完成这部分? 就像要求将控制权转移到操作系统等一样 – 我认为它的系统调用在更高的抽象层面上,但是在底层 – 它是如何工作的。 我感觉它和鸡蛋的问题类似,C创buildOS和C使用OS不能find过程如何。 任何人都可以打破我的困惑?

npm包不能在linux上执行

今天我试图发布一个自己的NPM 包 。 当通过安装 npm install symlinker -g 它应该是可执行的 symlinker (args) 这将使用Windows,但我不能通过Linux(树莓派)执行它。 使用Linux它会输出以下错误(命令:symlinker): : No such file or directory 我的第一个猜测是,它可能是nodejs可执行文件的一个问题,它是默认的“节点”(Windows)和“nodejs”(Linux)。 不知何故,我设法将nodejs作为“节点”安装在我的Raspberry Pi上,这样就不会成为问题。 因为这是我第一次尝试发布一个npm包,我认为这很可能是一个package.json错误。 github存储库 任何想法可能导致这个问题? 是我的树莓派的错,还是它的configuration,还是由我的npm包引起的?

bash:无法执行二进制文件:即使二进制文件和Linux是64位,也会执行格式错误

我对Linux很新。 我正在编译一个在线课程的代码。 /home/MyName/Desktop/Cplusplus-Advanced-Source-Code/cplusplus-advanced-source-code/BitmapFileHeaders/Debug的makefile如下: -include ../makefile.init print-% : ; @echo $* = $($*) RM := rm -rf # All of the sources participating in the build are defined here -include sources.mk -include src/subdir.mk -include subdir.mk -include objects.mk ifneq ($(MAKECMDGOALS),clean) ifneq ($(strip $(CC_DEPS)),) -include $(CC_DEPS) endif ifneq ($(strip $(C++_DEPS)),) -include $(C++_DEPS) endif ifneq ($(strip $(C_UPPER_DEPS)),) -include $(C_UPPER_DEPS) […]

引用Linux可执行文件的库

我已经用Java编写了一个应用程序,并使用gcj成功编译了它。 它工作得非常好,但是我遇到了一个障碍:我只能通过shell脚本运行可执行文件,因为我必须指定库path。 我需要的库是SWT,Xerces和GNU-crypto。 有没有办法在gcj编译时静态链接库,或者这不是一个好主意? 或者,我可以在编译时指定(相对)库path吗? 目前,我的shell脚本如下所示: #!/bin/sh export LD_LIBRARY_PATH=./libs/:$LD_LIBRARY_PATH exec ./MyJavaApp $*

是通过shebang线路链接口译便携式?

通过所谓的shebang线将脚本绑定到特定的解释器是POSIX操作系统上众所周知的做法。 例如,如果执行了以下脚本(给定足够的文件系统权限),操作系统将启动脚本的文件名作为第一个参数的/bin/sh解释器。 随后,shell将执行脚本中的命令,跳过shebang行,将其视为注释。 #! /bin/sh date -R echo hello world 可能的输出: Sat, 01 Apr 2017 12:34:56 +0100 hello world 我曾经相信解释器(在这个例子中是/bin/sh ) 必须是一个本地可执行文件,不能是一个脚本本身,反过来需要另一个解释器才能启动。 不过,我继续尝试下面的实验。 使用以下保存为/tmp/interpreter.py哑壳,… #! /usr/bin/python3 import sys import subprocess for script in sys.argv[1:]: with open(script) as istr: status = any( map( subprocess.call, map( str.split, filter( lambda s : s and not s.startswith('#'), map(str.strip, istr) […]

在Linux中运行Windows程序

我已经使用Visual Studio 2008在VB.NET中开发了一个记事本类Windows应用程序。如果我安装mono-develop包,是否可以在Linux环境中运行该文件?

使用GNU objcopy从Elf制作可执行的二进制文件

我想复制一个可执行的ELF文件通过: $ objcopy -O binary myfile.elf myfile.bin 不幸: $ chmod +x myfile.bin $ ./myfile.bin 导致:无法执行二进制文件 有没有办法保留文件的可执行性?

在Linux / Unix文件系统上将可执行文件挂载为文件

是否有可能在Linux上使可执行文件看起来像只读文件,打开“文件”进行读取实际上执行文件,并使其stdout可用于读取,就好像它是“文件”中的数据? 它应该可以通过任何知道如何打开文件来阅读的程序来打开,例如“猫”。

在CMake中设置构build链接器的searchpath

似乎这个问题以前经常被问到,但是没有一个解决scheme似乎适用于我的情况。 我在CMake / Linux环境下,在构build步骤中需要运行一个可执行的二进制文件(特别是protoc )。 这个二进制文件需要一个库,但是没有安装 (不能)在/usr这样的标准目录中,所以找不到这个库。 不幸的是,我不能操作protoc调用,因为它embedded在第三方脚本中。 现在,我可以在每次make或设置系统之前设置LD_LIBRARY_PATH ,但是这非常不方便,尤其是在进行构build的IDE或具有连续构build环境的分布式构build场景时。 我试图通过设置LD_LIBRARY_PATH set(ENV{LD_LIBRARY_PATH} "/path/to/library/dir") 但是这在构build步骤中似乎没有影响。 所以我的问题是:我可以在构build期间使用CMake中设置库searchpath吗?