我最近买了一台Macbook Pro,我想用终端在C中做一些编码.
我可以用这个命令编译代码:
gcc filename.c –o filename
Run Code Online (Sandbox Code Playgroud)
但我想用make命令编译它,因为我知道这是最佳实践,我想遵循最佳实践.
make filename cc filename.c -o filename
Run Code Online (Sandbox Code Playgroud)
这个命令给我以下输出:
make: Nothing to be done for `ex01'.
make: *** No rule to make target `cc'. Stop.
Run Code Online (Sandbox Code Playgroud)
请注意,我已经安装了Xcode和Xcode开发人员命令行工具,在/ usr/bin文件夹中,我看到了make和makefile属性.
有没有人有任何提示我应该怎么做才能用makefile和cc参数编译?
我在这里发帖是因为我需要一些与libssh相关的代码的帮助.
我在这里阅读了所有官方文档 ,但是如果有人可以点亮我我会很高兴,我仍然不明白我需要做的事情.
其实我想将文件从客户端复制到远程服务器,但我不明白如何使用图书馆libssh和libssh功能SFTP做到这一点.
情况是:ssh会话打开,sftp会话也是打开的,我可以创建一个文件,并使用lib ssh的集成功能从客户端写入服务器.
我没有找到一种简单的方法将文件从客户端复制到服务器,使用简单的函数,如sftp_transfer(sourceFile(如c:\ my document\hello world.txt),RemoteFile(/ home/user/hello world.txt) ),对(读(写)))?
根据我从教程中理解的内容,它首先在远程位置(服务器)创建一个文件,然后用这行代码打开这个文件:
file = sftp_open(sftp, "/home/helloworld.txt",access_type,1);
Run Code Online (Sandbox Code Playgroud)
之后,在服务器上创建文件,然后使用缓冲区写入此创建的文件:
const char *helloworld = "Hello, World!\n";
int length = strlen(helloworld);
nwritten = sftp_write(file, helloworld, length);
Run Code Online (Sandbox Code Playgroud)
我现在的问题是,如果我有一个文件,例如.doc文件,我想将该文件从c:\ mydocument\document.doc传输/上传到远程服务器/home/user/document.doc远程我该怎么办?用这种方法吗?
如何将此文件放入sftp_write()函数中以像示例函数中的helloworld一样发送它?
我可能在编程上不够理解,但我真的试图理解它并且我坚持使用它.
在此先感谢您的帮助
请参阅下面我用于测试的代码示例:
// Set variable for the communication
char buffer[256];
unsigned int nbytes;
//create a file to send by SFTP
int access_type = O_WRONLY | O_CREAT | O_TRUNC;
const char *helloworld = "Hello, …Run Code Online (Sandbox Code Playgroud) 我目前正在做一些C编程,我实际上想要使用SDL库.我想在Linux上用C语言构建一个小型2D游戏,以提高我的技能.
我的问题是我不是Linux超级用户的超级Makefile用户或库,我只是在项目上配置一次就是这样.
所以我在UBUNTU 14.04上编译SDL2程序时遇到了一些麻烦.
我从http://www.libsdl.org/download-2.0.php下载了最新的SDL库
然后我用默认步骤安装它:
./configure
make
sudo make install
Run Code Online (Sandbox Code Playgroud)
之后我可以看到/ usr/include/SDL2中有一些东西,所以我猜它已经安装好了.
#include <stdlib.h>
#include <stdio.h>
#include <SDL2/SDL.h>
int main(int argc, char *argv[])
{
printf(“SDL test\n”);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
因为我还在学习Makefiles和SDL,所以我没想到它.
但我发现这个Makefile可以编译旧的SDL而不是SDL2
CPP=gcc
CFLAGS=-O3
LDFLAGS=-lSDL -lSDL_mixer #Linker
EXEC=test
all: ${EXEC}
${EXEC}: ${EXEC}.o
${CPP} $(CFLAGS) -o ${EXEC} ${EXEC}.o ${LDFLAGS}
${EXEC}.o: ${EXEC}.c
${CPP} $(CFLAGS) -o ${EXEC}.o -c ${EXEC}.c
clean:
rm -fr *.o
mrproper: clean
rm -fr ${EXEC}
Run Code Online (Sandbox Code Playgroud)
但是这个Makefile对我不起作用,它说它不知道lSDL_Mixer和其他东西.
如何使用Makefiles和vim编辑器构建可运行的Makefile以使用SDL2编译C程序.
在此先感谢您的帮助