【发布时间】:2014-04-19 09:24:41
【问题描述】:
假设我从主机 Linux 系统为 ARM 交叉编译了这段代码:
#include <stdio.h>
#include <unistd.h>
#include <dirent.h>
int main (void) {
return execl ("/bin/echo", "echo", NULL);
}
我得到了一个二进制 echoFromC
问题出在我运行此二进制文件的目标上,没有 /bin、/usr 等。所以它不会执行命令。
所以我希望最终的二进制文件应该包含执行“echo”所需的所有内容。它不应该寻找 /bin/echo (因为它不存在)。
我该怎么做?
其实我要实现:
bash> echo 240 > /sys/class/gpio/export
bash> echo out > /sys/class/gpio/gpio240/direction
bash> echo 1 > /sys/class/gpio/gpio240/value
在 c 程序中
【问题讨论】:
-
为什么首先需要
echo?为什么不在 C 代码中直接调用printf()? -
你需要在你的程序中实现
echo而不是调用system("/bin/echo", ...。 -
一切都执行回显是什么意思?您需要找到可执行文件的路径还是只在标准输出上打印?
-
请在底部查看我的更新
-
@perreal 我猜他想以某种方式在他的
echoFromC中包含可执行文件/bin/echo,但他正在进行交叉编译,除非他包含@987654329 的目标版本,否则这没有意义@.