标签: executable

是否有允许我移动堆栈起始地址的链接器脚本指令?

我正在尝试使用 x86_64 上的链接器脚本更改堆栈的起始位置。我能够使用这个移动我的可执行起始地址:

PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x200000)); . = SEGMENT_START("text-segment", 0x200000) + SIZEOF_HEADERS;
Run Code Online (Sandbox Code Playgroud)

我像这样改变了我的全局变量:

 .data ALIGN(0x10000000)           :
{
*(.data .data.* .gnu.linkonce.d.*)
 SORT(CONSTRUCTORS)
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下内容来移动堆栈区域:

. = 0x50000000;
.stack    :
{
 stack_start = .;

  PROVIDE( stack_start = . );
  *(.stack)
      . += 0x2000;
  stack_end = . ;
  PROVIDE( stack_end = . );
}
Run Code Online (Sandbox Code Playgroud)

但这并没有让我去任何地方。

这是我用来测试堆栈位置的测试程序:

 #include <stdio.h>
 #include <stdlib.h>

int global_var = 555;

void test()
{
   int local_test = 666;

   printf("address of global_var: %p\n", &global_var);
   printf("address of local_test: %p\n", &local_test); …
Run Code Online (Sandbox Code Playgroud)

linker executable elf linker-scripts executable-format

5
推荐指数
1
解决办法
1435
查看次数

复制的可执行文件是否会在没有库的新机器上运行

如果我在安装了许多库的 linux 机器上编译 C++ 程序(例如 Boost),然后将该可执行文件复制到没有这些库的新 linux 机器上,该可执行文件是否仍能正常运行?

c++ linker executable

5
推荐指数
1
解决办法
1234
查看次数

将参数传递给在 C++ 中不起作用的可执行文件

这是“sleeper.exe”的源代码,我有:

int main(int argc, char** argv) {
    cout<<argv[1];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我像这样从命令行调用时:

C:\sleeper 5
Run Code Online (Sandbox Code Playgroud)

我懂了

5
Run Code Online (Sandbox Code Playgroud)

在命令行中,所以这工作正常..

现在我试图从其他一些 exe 中调用这个 exe,如下所示:

std::cout << "ret is:" << ret;
std::cout << "\n";

CreateProcess("sleeper.exe", // No module name (use command line)
               ret, // Command line
               NULL, // Process handle not inheritable
               NULL, // Thread handle not inheritable
               FALSE, // Set handle inheritance to FALSE
               0, // No creation flags
               NULL, // Use parent's environment block
               NULL, // Use parent's starting directory 
               &si, // …
Run Code Online (Sandbox Code Playgroud)

c++ executable createprocess execute

5
推荐指数
1
解决办法
1367
查看次数

如何使用批处理将 dll 作为 exe 执行

我需要知道如何制作一个批处理文件来执行一个 dll 文件,就好像它是一个 exe 有谁知道我可以做什么我使用的是 Windows 7。该文件是一个 exe,只是带有 dll 扩展名。

dll executable exe batch-file

5
推荐指数
1
解决办法
1万
查看次数

包括一个带有 python 模块的二进制文件,这样做是个好习惯吗?

我正在尝试编写我的第一个 python 模块,它可以轻松地分发和安装在不同的机器上(希望只需克隆存储库并运行 setup.py)。问题是我的模块依赖于一个小的二进制文件;我使用 Selenium 模块作为我的依赖项之一,它需要一个用于 chrome 的网络驱动程序(http://chromedriver.storage.googleapis.com/index.html?path=2.22/)。

我想要做的是在我的 repo 中包含不同的二进制文件,让 python 确定系统平台,选择正确的二进制文件,将其添加到系统路径,然后正常安装模块。

这容易做到吗?更重要的是,这实际上是好的做法还是有更好的选择?必须单独下载二进制文件并将其添加到我想在其上运行模块的每台机器的系统路径似乎是一件非常烦人的事情,但我宁愿不违反约定。

python executable module packages

5
推荐指数
1
解决办法
1272
查看次数

有没有办法为 Node.js (npm) 应用程序创建快捷方式桌面?

没有经验的用户希望“看到”我在 Node.js 中创建的应用程序,但他们不想使用控制台。据他们说,安装它是个好主意,只需单击一下,在桌面上,他们就可以“看到”它。

他们希望将 Node.js 应用程序作为 Windows 程序运行。就这样!

我该怎么做?我应该创建一个批处理文件吗?

javascript windows executable batch-file node.js

5
推荐指数
1
解决办法
9507
查看次数

固件文件的常见结构有哪些?

我是嵌入式编程的总n00b。假设我正在使用编译器构建固件。此操作的结果是一个文件,该文件将被闪存到(我猜)诸如 ARM 或 AVR 之类的 MCU 的闪存中。

我的问题是: 此类生成的包含固件的文件使用哪些通用结构(如果有)?

我来自桌面开发,我知道例如对于 Windows,编译器很可能会生成PE或 PE+,而类 Unix 系统我可能会得到ELF和COFF,但不知道嵌入式系统。

我也明白这在很大程度上取决于许多因素(编译器、ISA、MCU 供应商、操作系统等),所以我至少可以举一个例子。


更新:我将对所有提供使用结构示例的答案进行投票,并将选择我认为最能调查最新技术的答案。

embedded executable firmware

5
推荐指数
2
解决办法
3131
查看次数

如何检查应用程序本身的校验和?

我想知道是否可以通过检查其校验和以某种方式检查我的应用程序是否修改。

因此,例如:

int main()
{
     const std::string checksum = "98123abc1239";
     std::string myChecksum = calculateChecksumOfThisApp();
     if(checksum != myChecksum)
         std::cerr << "This application is invalid. Please check if the download has been successful." << std::endl;
 }
Run Code Online (Sandbox Code Playgroud)

显然,这里的问题是编译我的应用程序、获取可执行文件的校验和并将其插入到我checksum更改的应用程序校验和中。

我可以将校验和外部存储在某个文件中,但我希望其他人无法操作 exe 的附带好处。他们可以再次计算校验和并将其放入校验和文件中,因此不会从中获得任何好处。

有没有办法创建这样的自检?

c++ executable checksum

5
推荐指数
1
解决办法
1768
查看次数

使用 R 包安装可执行脚本

在大多数脚本语言(例如 Ruby、Python 等)中,包管理器(例如 gem、pip 等)可以将脚本安装为可执行文件并将它们链接到 PATH 变量中引用的目录(例如 /usr/local/bin) . 这会将这些可执行脚本转换为 shell 命令,用户可以在编程界面之外以独立方式运行这些命令。

我想知道 R 中是否也有这种可能性。鉴于 R 使用标准的 Makefile,我想一定有办法做到这一点,尽管是非标准的。我已经知道我们可以使用docopt包读取 R 脚本中的命令行参数。但是有没有办法在安装包时将脚本安装为可执行文件?

在这个主题上有一个领导会很棒,但是来自 CRAN 的一个工作示例也足够了。

deployment executable packages r

5
推荐指数
2
解决办法
793
查看次数

使用 chromedriver 和 Selenium 创建 Python 可执行文件

我使用 Selenium 和 chromedriver 创建了一个小型网络抓取应用程序,用于将内容输出到 excel 文件的项目。不幸的是,我为这个应用程序设计的人并不是最精通技术的人。

所以我的问题是如何与这些人分享这个应用程序?

我查看了 py2exe.org,但在创建可执行文件时它没有考虑 chromedriver。有没有更好的方法来做到这一点,而这些人不必手动将文件添加到他们的“usr/bin”中?

python selenium executable selenium-chromedriver

5
推荐指数
1
解决办法
8878
查看次数