标签: programming

GDB如何跨步、跨步、跨步?

help在 GDB 时打字,但没有找到任何关于进入、跨步和退出的信息。我在_start( break _start)的汇编程序中放置了一个断点。之后我打字next,它完成了调试。我猜是因为它完成了_start并且没有按照我的意愿进入

任何人都可以提供帮助?

programming debugging gdb

71
推荐指数
2
解决办法
13万
查看次数

Mac OS X 和 Linux 之间的二进制兼容性

振作起来,这个问题可能会显得幼稚和/或愚蠢,因为我对类 Unix 系统的内部工作以及一般的编程比较陌生。

准备好?好的!我会经历大约 3 个可笑的水平,随着我的进行而增加。


我们有两个具有相似硬件的系统(主要是处理器,让我们说一个标准的英特尔核心 2 双核)。

一个正在运行(在此处插入您的 linux 发行版:此后将使用 Ubuntu),另一个正在运行,比如说 Mac OS X。

编译一个等效的程序,让我们这样说:

int main()
{
    int cat = 33;
    int dog = 5*cat;
    return dog;
}
Run Code Online (Sandbox Code Playgroud)

代码非常简单,因为我还不想考虑共享库的含义。

在各自的系统上编译时。输出之间的主要区别不是 ELF 与 Mach-O 的问题吗?如果要剥离格式的每个二进制文件,留下一个平面二进制文件,反汇编的机器指令是不是一样?(根据编译器的习惯/倾向,可能会有一些差异)。

1.)如果要开发一个程序来重新打包从我们的 Ubuntu 系统生成的平面二进制文件,以 Mach-O 格式,它会在 Mac OS X 系统中运行吗?那么,如果只有上面假设程序的编译后的二进制文件,并且有这个用于重新打包平面二进制文件的神秘工具,那么简单的程序是否能够在 Mac OS X 系统上运行?


现在让我们更进一步。

我们现在有一个带有源代码的程序,例如:

#include <stdio.h>
int main()
{
    printf("I like tortoises, but not porpoises");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

2.)假设这个程序被编译并静态链接,我们的神奇程序是否仍然能够以 Mach-O 格式重新打包原始二进制文件并使其在 mac os X 上运行?看到它不需要依赖任何其他二进制文件,(在这种情况下,mac系统不会有)


现在是最后一关;

3.)如果我们使用这个假设的程序将​​所有必需的共享库转换为 Mach-O 格式,然后使用动态链接编译上面的程序会怎样。程序还能成功运行吗? …

linux programming executable

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

在 Linux 上使用 O_DIRECT

如果这个问题过于面向程序员,请告诉我。我想知道是否有人熟悉Linux 2.6上open()系统调用的O_DIRECT标志?Linus 贬低它的使用,但高性能文件写入似乎表明它的使用。我想知道任何现实世界的经验和建议。

更多信息:我正在使用的应用程序确实维护着自己的缓存,这样做的速度平均提高了 5 倍或更多。写入文件时,缓存的内容必须写出到文件系统缓存,这似乎是多余的,而且是一个性能问题。

linux performance programming kernel files

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

我的 linux 二进制文件可以在所有发行版上运行吗?

我找到了一个很好的 Delphi 替代 IDE,称为 Lazarus。但我对程序员没有问题。

请问静态链接上的所有Linux发行版的Linux二进制工作?即在我构建的 Linux 发行版上无关紧要,它可以在 Debian / ArchLinux / Ubuntu / OpenSUSE / ... 上运行吗?

根据我的发现,真的只有 32 位和 64 位重要吗?我想在发布之前确定。

programming

27
推荐指数
2
解决办法
7718
查看次数

如何在终端中运行 BASIC 代码?

我想在 Linux 中运行 BASIC 代码,就像您以前在旧计算机上所做的那样。(我正在寻找可以本地运行操作系统功能的 BASIC 中断器)

我有哪些选择?(最好是基于 Debian 和基于 Arch 的)

linux command-line programming

26
推荐指数
4
解决办法
2万
查看次数

用纯 Bash 编写的程序能有多复杂?

经过一些非常快速的研究,似乎 Bash是一种图灵完备的语言

我想知道,为什么 Bash 几乎只用于编写相对简单的脚本?由于 Linux 附带了 Bash shell,因此您可以像其他流行的计算机语言一样运行 shell 脚本,而无需任何外部解释器或编译器。这是一个巨大的优势,在某些情况下可以弥补语言本身的平庸。

那么,此类程序的复杂程度是否有限制?纯 Bash 是用来写复杂程序的吗?是否可以在纯 Bash 中编写文件压缩器/解压缩器?编译器?一个简单的视频游戏?

是否仅仅因为只有非常有限的调试工具而很少使用?

shell bash programming

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

程序是否可以在 POSIX 中获取命令行参数之间的空格数?

假设我用以下行编写了一个程序:

int main(int argc, char** argv)
Run Code Online (Sandbox Code Playgroud)

现在它通过检查argv.

程序可以检测参数之间有多少个空格吗?就像我在 bash 中输入这些一样:

ibug@linux:~ $ ./myprog aaa bbb
ibug@linux:~ $ ./myprog       aaa      bbb
Run Code Online (Sandbox Code Playgroud)

环境是现代 Linux(如 Ubuntu 16.04),但我想答案应该适用于任何符合 POSIX 的系统。

command-line shell programming

23
推荐指数
4
解决办法
4405
查看次数

什么是最好的通用编程工具来补充 Vim?

我已经使用 Vim 作为我的文本编辑器有一段时间了,我觉得我在做任何事情都需要很长的路要走。我使用 ctags 标记我的代码库以进行导航,并使用 grep(尽管效率低下)来查找使用某些方法的位置。但我有一种感觉,有一些我不知道的非常有用的工具可以提高我的工作效率。

我可以用于补充 Vim 的通用编程的最佳软件堆栈是什么?您如何导航代码库、运行 make、将更改推送到您的源代码控制系统等?你在 Vim 旁边打开了第二个控制台吗?

vim programming utilities

22
推荐指数
2
解决办法
2690
查看次数

automake 和 autoconf 是编译代码的标准方法吗?

我有时从源代码编译应用程序,我一直在使用:

./configure
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

但是最近,我遇到了./autogen.sh它为我生成配置和制作脚本并执行它们。

还有哪些其他方法可以简化 C/C++/C#(mono) 编译?make 好像有点老了。有没有新的工具?如果有选择,我应该使用哪一个?

compiling programming

22
推荐指数
3
解决办法
5868
查看次数

AT&amp;T 的链接编辑器命令语言是什么?

的手册页ld参考了AT&T’s Link Editor Command Language,但是AT&T’s Link Editor Command Language除了指向所述手册页之外,Google 搜索并没有提供关于什么是或曾经是什么的令人满意的解释,而我预计前五个结果中会出现一个维基百科页面。

这里似乎缺少一段重要的计算历史。有没有人有关于这种语言的一些参考或历史文档?我们可以放在维基百科中为子孙后代保存的东西吗?

programming system-v linker

18
推荐指数
1
解决办法
1164
查看次数