小编Rap*_*ner的帖子

如何在Mac OS X终端上使用make编译C程序

我最近买了一台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文件夹中,我看到了makemakefile属性.

有没有人有任何提示我应该怎么做才能用makefile和cc参数编译?

c macos terminal makefile

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

如何使用libssh和sftp在C/C++中复制文件

我在这里发帖是因为我需要一些与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 c++ ssh sftp libssh

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

如何在Linux/Ubuntu上安装/编译SDL2 C代码

我目前正在做一些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程序.

在此先感谢您的帮助

c linux sdl

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

标签 统计

c ×3

c++ ×1

libssh ×1

linux ×1

macos ×1

makefile ×1

sdl ×1

sftp ×1

ssh ×1

terminal ×1