标签: executable

减少GCC目标EXE代码大小?

当我编写一个无操作程序时:

int main(void)
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

与各种编译器:

  • GCC(与LLVM类似的结果):提供10-KiB可执行文件(编译-s)

    • 部分:.CRT,.bss,.data,.idata,.rdata,.text,.tls

    • 取决于msvcrt.dll和kernel32.dll

  • MSVC 2010:获得5.5 KiB可执行文件(编译/MD /Ox)

    • 部分:.data,.rdata,.reloc,.text

    • 取决于msvcr100.dll和kernel32.dll

    • 本来通过合并进一步减少.rdata与.text

  • Windows驱动程序工具包7.1:提供6.5 KiB可执行文件(编译/MD /Ox,链接msvcrt_winxp.obj以允许它在XP上运行)

    • 部分:.data,.rdata,.text

    • 取决于msvcrt.dll和kernel32.dll

    • 本来通过合并进一步减少.rdata与.text

  • Windows 2003驱动程序开发工具包:提供3.5 KiB可执行文件

    • 部分:.data,.rdata, …

size executable gcc llvm

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

执行时,C#应用程序显示"否"

我在本地开发机器上开发了一个小型的C#控制台应用程序(TextMatcher.exe),现在需要将它部署到实时环境中.它引用了我开发的另一个类库,它具有泛型函数,我打算在将来的控制台应用程序中使用和改进.

最终,这个特定的应用程序将在SSIS包中执行,但是现在我只是试图从中运行它cmd.

我告诉你不是这是程序的实际输出:

E:/TextMatcher>TextMatcher.exe
No

E:/TextMatcher>
Run Code Online (Sandbox Code Playgroud)

该计算机字面意思是"否",并没有给出进一步的信息.在程序的任何地方,我都没有在任何失败或其他情况下输出"否"字样.

当然,它在当地运行良好.我确保我也包含了实用程序类库的dll.我已经阅读了有关如何正确部署控制台应用程序的其他问题(此处,此处),并已遵循建议.

注意:由于使用"否"这个词对问题至关重要,这对谷歌来说也很难实现......

编辑-这似乎是现在的工作......我只是复制从我的本地机器再次文件到远程机器......我试图让它再次突破,这样我可以找出地球上发生的事情,直到我这样做,我才会接受答案,以便人们可以更多地了解它.无论哪种方式,这都是令人费解的.

.net c# dll executable console-application

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

如何在Inno Setup中使用参数运行.exe文件

请尝试在cmd控制台中运行以以下方式运行的.exe文件:

nameFile.exe -inf fileDriver.inf安装

在Inno Setup中,我有以下内容:

var
command: Srtring;

Begin

command := 'nameFile.exe -inf fileDriver.inf install';
command := AddQuotes(command);
Exec(command, '', 'C:\pathOfFileName', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
S:= SysErrorMessage(ResultCode);
MsgBox(S, mbInformation, MB_OK);
end;
Run Code Online (Sandbox Code Playgroud)

消息显示参数无效,如何使用参数运行exe文件?

parameters executable exe inno-setup

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

DOS标头中的e_cblp和e_cp是什么?

我正在尝试深入理解DOS标题,我坚持使用这些标题.我知道唯一需要的字节是MZ签名和指向PE部分的指针,但我必须知道这两个是什么:

USHORT e_cblp;          // Bytes on last page of file
USHORT e_cp;            // Pages in file
Run Code Online (Sandbox Code Playgroud)

在大多数可执行文件的二进制代码中,这些值分别为90h和03h.一个页面是512字节的代码,所以有3个页面,但在哪里?我在哪里可以找到它们?如何在512字节的最后一页中识别这些90h(144)字节?

此信息仅由DOS请求.将在DOS中运行的PE文件的唯一代码是DOS存根,它不是3页代码而只是64字节.那么,90h和03h必须做什么?我不能只说e_cblp=01h和e_cp=DOS header+DOS stub?

executable exe header dos portable-executable

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

是否有一个允许构建独立可执行文件的Lua IDE?

我目前正在搜索Windows Lua-IDE,它可以为我的脚本文件中的任何平台(例如windows,linux,mac os x)创建独立的可执行文件.我搜索谷歌和SO,但我找到的只是一个额外的工具.

有谁知道这种Lua-IDE?

windows ide lua executable multiplatform

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

如何使用GCC生成ELF文件?

我正在Linux OS上编写C和C++代码,我正在使用GCC.完成我的代码后,我想生成一个ELF文件.我只能生成"a.out"文件而我不需要它.我怎样才能获得ELF文件?ELF文件出现的原因是什么?或者是否可以使用此程序生成此文件?

executable gcc file-format compilation elf

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

如何从加载的DLL中调用位于可执行文件中的函数?

我在可执行文件中找到了一个函数,我想从我的DLL中调用它.它的地址将0x0090DE00根据OllyDbg.我试图直接调用它:

luaL__openlib *f = ((luaL__openlib*)(module_handle  + 0x0090DE00));
Run Code Online (Sandbox Code Playgroud)

而且还要按照此处的建议添加模块句柄的基础:

uint8_t * module_handle = (uint8_t *)GetModuleHandle(L"ForgedAlliance1.exe");

luaL__openlib *f = ((luaL__openlib*)(module_handle  + 0x0090DE00));
Run Code Online (Sandbox Code Playgroud)

看来这不起作用,因为我得到访问冲突异常 - 看起来指针无效.

那么:如何通过使用其地址来调用此函数?


我刚刚插入了一条简单的RET指令0x00C0B530.我的代码现在看起来如下:

typedef void (*test) ();

EXTERN_DLL_EXPORT void initialize(lua_State *L)
{
    // Adding this should not be necessary. I get 0x00C0B530 from 
    // OllyDbg where the offset 0x00401000 is included
    uint8_t * module_handle = (uint8_t *)GetModuleHandle(L"ForgedAlliance1.exe");

    test *f = NULL;

    f = ((test*)(0x00C0B530));

    (*f)(); // Crashing 
} …
Run Code Online (Sandbox Code Playgroud)

c executable ollydbg

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

我可以使用nuitka创建单个文件可执行文件吗?

如标题所述,我可以使用nuitka创建单个文件可执行文件吗?我尝试--portable和--standalone选择,但它们似乎不起作用。谁能解释一下这个--recurse-all选项吗?如果您还有其他建议,请告诉我。我不想使用pyinstaller,因为它启动我的应用程序太慢。感谢您的任何回复。

python windows executable compilation nuitka

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

在Windows的Sourcetree中,如何chmod设置可执行权限位?

Sourcetree Windows用户如何在推送之前在某些文件上设置可执行位?

如果系统管理员在Windows上使用sourcetree来管理脚本(*.sh,*.py等等),这是一个常见问题,这些脚本在远程linux系统上被拉时需要执行。

到目前为止,我发现的唯一解决方案是打开“终端”窗口,然后运行命令:

git update-index --chmod=+x <your_file>
Run Code Online (Sandbox Code Playgroud)

看来这必须是足够常见的情况,才能使用更简单的解决方案,例如右键单击文件并“设置可执行文件”或通过中的某些设置.gitattributes,但是到目前为止,我找不到任何类似的解决方案。

我也知道您可以定义“自定义操作”,但是如果这种常见的事情确实需要您事先投入大量精力进行设置,这真是令人惊讶。

有没有更好的解决方案?

windows git executable chmod atlassian-sourcetree

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

创建一个JAVA Standalone可执行应用程序,使其无需安装即可在不同平台上运行

我已经使用jlink为我的Java应用程序创建了运行时映像,并且希望能够将我的应用程序作为可执行文件发布到不同的平台。

理想情况下,它将是一个文件,用户可以双击它并启动应用程序,而无需安装任何程序。

目前是否有一个好方法可以做到这一点?

java executable package java-11

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