我已经使用 .c 创建了(可执行的)二进制“示例”
gcc sample.c -o sample
已成功创建名为 sample 的二进制文件。
当我从像 ./sample
这样的终端运行它时,它会显示一个结果..
但是当我像 exec ./sample
这样从我的 tcl 运行它时,它显示像 ./sample no such file or directory..
谁能帮我解决上面的错误?
最佳答案
如果 current 目录中的 sample
是可执行的,exec ./sample
应该可以运行。当然,假设二进制文件本身在运行时不会生成该错误消息。 (默认情况下,stderr 上的消息将成为 Tcl 中的错误。)
检查 puts [pwd]
是否告诉您预期的位置;如果您在脚本的其他地方有 cd
,那么该相对路径将不再有效。如果这是问题所在,请使用编译文件的完整、绝对 路径。 (您可以使用 file normalize sample
在脚本的开头计算它,但是您必须在 cd
之前执行此操作;好的库包不要使用 cd
正是因为它太困惑了,同时通常对他们来说完全没有必要……)
如果 file exists ./sample
为真(并且 file executable ./sample
也为真,如果它刚刚由编译器生成则应该如此)然后在执行失败后立即检查 errorInfo
和 errorCode
全局变量的内容。他们可能会更多地指出哪里出了问题。 (或者可能不是;不能确定。)
关于c - 当我从 tcl 脚本调用 c 二进制文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20703281/