- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我对 libssh (libssh.org) 有疑问。我需要在远程服务器上运行一个 makefile。我用命令“channel_request_exec”来完成:
int SSHExecCmd (void(* MessSender)(char* CurMessage, bool IsError, CWnd* MainWnd),ssh_session session, CString & ShellEcho, char * cmd, CWnd* MainWnd)
{
ssh_channel channel;
int rc;
channel = ssh_channel_new(session);
if (channel == NULL) return SSH_ERROR;
rc = ssh_channel_open_session(channel);
if (rc != SSH_OK)
{
ssh_channel_free(channel);
return rc;
}
rc = ssh_channel_request_exec(channel, cmd);
if (rc != SSH_OK)
{
ssh_channel_close(channel);
ssh_channel_free(channel);
return rc;
}
char buffer[256];
unsigned int nbytes;
nbytes = ssh_channel_read(channel, buffer, sizeof(buffer), 0);
while (nbytes > 0)
{
if (fwrite(buffer, 1, nbytes, stdout) != nbytes)
{
ssh_channel_close(channel);
ssh_channel_free(channel);
return SSH_ERROR;
}
nbytes = ssh_channel_read(channel, buffer, sizeof(buffer), 0);
}
if (nbytes < 0)
{
ssh_channel_close(channel);
ssh_channel_free(channel);
return SSH_ERROR;
}
return SSH_OK;
}
Makefile 位于根目录中:
all: mpi_cuda.o pattern2d.o
mpicc mpi_cuda.o pattern2d.o -o mpi_cuda -lrt -lpthread -L/opt/cuda/lib64 -lcudart -lm
mpi_cuda.o: mpi_cuda.c
mpicc -g -std=c99 -D_GNU_SOURCE -I/opt/cuda/include -c $< -o $@
pattern2d.o: pattern2d.cu
nvcc -g -c $< -o $@
我发送命令“make”并收到回显:
mpicc -g -std=c99 -D_GNU_SOURCE -I/opt/cuda/include -c mpi_cuda.c -o mpi_cuda.oda
但没有任何反应(未执行编译)。
如果我用腻子制作:一切正常。回声:
make
mpicc -g -std=c99 -D_GNU_SOURCE -I/opt/cuda/include -c mpi_cuda.c -o mpi_cuda.o
mpi_cuda.c: В функции ‘main’:
mpi_cuda.c:148: предупреждение: недостаточно аргументов для указанного формата
nvcc -g -c pattern2d.cu -o pattern2d.o
mpicc mpi_cuda.o pattern2d.o -o mpi_cuda -lrt -lpthread -L/opt/cuda/lib64 -lcudart -lm
我该如何解决?
最佳答案
不熟悉 libssh,但可能会出错,因为环境设置不同,因此通过 shell 显式运行 make 可能会有所帮助。
尝试将命令 (make
?) 更改为
bash -c make
如果不行,试试
bash -c "export > env.txt ; make > make_out.txt 2> make_err.txt"
然后检查那些文件是否出现,以及它们包含什么,应该会给出很好的提示。
如果您有一个工作案例和一个非工作案例,那么从这两个案例中获取这些文件,并将它们进行比较(例如,使用 diff -u
)。
并将 bash
更改为您使用的任何 shell(在这种情况下,检查 -c
是否正确切换以提供命令字符串,如果 export
是显示环境的正确命令),如果你不使用 bash。
基于以下评论:env.txt 可能存在差异,因为某些环境变量仅为交互式 shell 设置。例如,在我的 Ubuntu 框中,.bashrc 的开头有这样的行:
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
现在,如果在该行之后的 .bashrc 中设置了任何所需的环境变量,并且您的 ssh 连接是非交互式的(没有伪 tty),则不会设置这些变量。
如果是这种情况,请将这些 env 变量集移动到 ~/.profile
,或在 ~/.bashrc
中,然后再进行上述测试。还可以执行 man bash
,并阅读有关初始化文件的内容(例如 ~/.bashrc
)。
其他解决方案是使 ssh-session 具有交互性,我相信在 libssh 的这个页面上有记录:http://api.libssh.org/master/libssh_tutor_shell.html .
关于c++ - 如何使用 libssh 运行 makefile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14422396/
我试图将我的程序与 libssh 静态库链接。 以下是我从 libssh 教程中复制的简单代码: //sshtest.c #define LIBSSH_STATIC 1 #include #incl
我想知道在使用 ARM 的 Sourcery 工具链进行交叉编译时是否可以将我的应用程序链接到 libssh。我的主机系统是Ubuntu x86_64 :~/c/ssh$ arm-none-linux
我想知道在使用 ARM 的 Sourcery 工具链进行交叉编译时是否可以将我的应用程序链接到 libssh。我的主机系统是 Ubuntu x86_64 :~/c/ssh$ arm-none-linu
我正在使用 libssh。 调用ssh_channel_write后,我必须知道是否有数据要读取。 ( 但我不想检索数据。 ) 如果没有数据要读取(例如10s后),我会调用ssh_channel_wr
我正在使用 libssh 向计算机发送远程命令。该命令是实时的,因此我试图在生成数据时获取数据。基本上,我正在对鼠标事件进行十六进制转储,并且我想要该数据。如何从我的命令中返回实时结果? #inclu
已阅读相关内容docs和 tutorials并找到了similar问题,我仍然无法继续。如果这是一个常见问题,我提前表示歉意。我进行了搜索,但我不太确定我在寻找什么...... 我正在 Debian
我不知道为什么我的 libssh 程序无法连接到本地主机,但它对远程主机运行良好。 ssh_session my_ssh_session = ssh_new(); ssh_options_set(my
我正在尝试编写一个简单的程序(玩具示例),将文件从远程主机复制到本地计算机。 当我尝试复制一个 txt 文件时它有效,但不适用于 mp4 等文件。 这是我的代码,基本上是教程中的部分拼接而成:http
我正在尝试将一个库包含到我的代码 (libssh) 中,但没有任何效果...在这一点上,我不确定该怎么做,因为搜索引擎中没有针对我收到的错误弹出任何结果。 我在这里下载了 libssh: https:
我正在尝试一个非常简单的 libssh 实现,但 valgrind 显示内存泄漏。 代码是: #include #include #include #include #include int
我正在尝试在我的应用程序中使用 libssh,但我不断收到内存泄漏。我正在尝试的最简单的代码是: #include #define SSH_NO_CPP_EXCEPTIONS assert(0 ==
我的 SSH 服务器使用双重身份验证。我不知道它是如何实现的。但最初它要求输入密码,然后再次要求输入另一个密码才能登录到与通常控制不同的单独控制台。 我的代码与文档中显示的示例代码类似, #inclu
我按照教程尝试使用 libssh 打开和验证 SSH 连接,但在 ssh_connect 之后,无论我尝试密码验证、公钥验证还是不验证,应用程序都会崩溃并出现核心转储。 t@1 (l@1)
问题:让一个使用 libssh 库的简单程序成功编译而不会出现链接器错误。 程序: #include #define LIBSSH_STATIC 1 #include #include void
即使我可以在我的服务器上使用各种方法进行身份验证,使用 libssh 库,也没有检测到任何身份验证方法。这是一个代码示例: #include #include int main(int,ch
我正在使用 libssh 库并尝试创建一个新的 SFTP session 。我不断收到错误消息 ssh_packet_unimplemented: Received SSH_MSG_UNIMPLEME
在 ssh cli 中,我可以: ssh root@localhost -t aria2c https://github.com/JetBrains/intellij-community/archiv
我试图使用 libssh 0.7.0 将 SSH 通信包含到我的程序中。我按照教程创建了到远程计算机的简单连接,但遇到了这个错误: [2016/10/26 16:38:56.280261, 1] ss
我正在我的应用程序中为 xen VM 实现 VNC 连接。为了连接,我必须转发端口,因为 XenServer 只接受本地连接。我是这样做的: ssh -L 5903:localhost:5903 ro
我已经按照说明安装了 libssh,尽管一切似乎都正常,但我的编译器仍然在“#include”行中返回错误“找不到文件”。我猜它与目录或链接有关(我在下载它的同一个文件夹中有“make install
我是一名优秀的程序员,十分优秀!