【发布时间】:2021-08-29 18:19:54
【问题描述】:
我正在尝试在两台设备(例如两台计算机)之间创建一个通信通道,该通道将与加密网络协议 Salt channelv2 一起使用并相互转发数据。我创建了 2 个应用程序,其中第一个应用程序演示了 Salt channelv2 协议的功能,第二个应用程序创建了一个安全的通信通道(特别是使用 TCP/IP 模型)。应用程序正在运行,我使用 CLI 中的链接编译它们,现在我正在尝试创建一个 makefile 文件以便为用户轻松编译程序。
这是我的 Makefile:
CC=gcc
CFLAGS=-O2 -Wall -g -fcommon -I./salt_org -I./header_folders -I./library
#LDFLAGS=
all:program
program: salt_buffer.o libcrypto.a
$(CC) $(CFLAGS) -o program.exe salt_buffer.o libcrypto.a
randombytes.o: randombytes.c
$(CC) $(CFLAGS) -c randombytes.c
tweetnacl_modified.o: tweetnacl_modified.c tweetnacl_modified.h
$(CC) $(CFLAGS) -c tweetnacl_modified.c
tweetnacl_modified_wrapper.o: tweetnacl_modified_wrapper.c
$(CC) $(CFLAGS) -c tweetnacl_modified_wrapper.c
salt.o: salt.c salt.h salti_handshake.h salti_util.h
$(CC) $(CFLAGS) -c salt.c
salt_io.o: salt_io.c salti_util.h
$(CC) $(CFLAGS) -c salt_io.c
salti_handshake.o: salti_handshake.c salti_handshake.h
$(CC) $(CFLAGS) -c salti_handshake.c
salti_util.o: salti_util.c salti_util.h
$(CC) $(CFLAGS) -c salti_util.c
salt_modified.o: salt_modified.c salt_modified.h salt.h
$(CC) $(CFLAGS) -c salt_modified.c
salt_buffer.o: salt_buffer.c header_folders/salt.h \
header_folders/salti_handshake.h header_folders/salti_util.h \
header_folders/salt_modified.h header_folders/salt_io.h
$(CC) $(CFLAGS) -c salt_buffer.c
libcrypto.a: salt.o salti_handshake.o salti_util.o salt_io.o tweetnacl_modified_wrapper.o \
tweetnacl_modified.o randombytes.o salt_modified.o
ar -cvq -o libcrypto.a salt.o salti_handshake.o salti_util.o salt_io.o \
tweetnacl_modified_wrapper.o tweetnacl_modified.o randombytes.o salt_modified.o
clean:
rm -f program *.o *.a hlavickove_subory/*.gch
在一个文件夹中是源代码和文件夹,例如 salt_org、header_folders、library、salt_buffer.c、salt_modified.c 和 makefile。主程序是 salt_buffer.c,salt_modified.c 包含我提供的源文件,其中包含 salt_buffer.c 使用的应用程序所需的主体函数。使用辅助源代码,我尝试创建一个静态库 libcrypto.a。 randombytes.c、tweetnacl_modified.c、tweetnacl_modified_wrapper.c 等源代码位于库文件夹中。 salt.c、salti_handshake.c、salti_util.c、salt_io.c 等其他源代码位于 salt_org 文件夹中。我使用的所有头文件都在 header_folders 文件夹中。
在工作中,我受到了这个话题的启发:enter link description here。
运行makefile文件时遇到的问题是: gcc -o .o gcc.exe:致命错误:没有输入文件 编译终止。 make: *** [: .o] 错误 1
在源文件中,我有这样的文件路径,例如 salt_buffer.c:
#include "salt.h"
#include "salt_io.h"
#include "salti_util.h"
#include "salti_handshake.h"
#include "salt_modified.h"
我使用 11.2 的 Winlibs 编译器 你能告诉我我的错误吗?
【问题讨论】:
-
目录路径好像不对。也许您的意思是
-I../salt_org(两个点)? -
在
salti_util.h和`\`之间加一个空格(卡在下一行的第一个单词上) -
我也加了个空格,尝试修改源文件的路径,结果还是一样