# Non-SGX Objects server: App/Server.o $(Nsgx_App_Cpp_Objects) @$(CXX) $^ -o $@ $(LDLIBS) $(Salticidae_Lib_Paths) -lsalticidae $(Salticidae_Include_Paths) @echo "LINK <= $@" client: App/Client.o App/Stats.o App/Signs.o App/Sign.o App/Nodes.o App/NodeInfo.o App/KeysFun.o App/Transaction.o # $(Nsgx_App_Cpp_Objects) @$(CXX) $^ -o $@ $(LDLIBS) $(Salticidae_Lib_Paths) -lsalticidae $(Salticidae_Include_Paths) @echo "LINK <= $@" keys: App/Keys.o App/KeysFun.o # $(Nsgx_App_Cpp_Objects) @$(CXX) $^ -o $@ $(LDLIBS) $(Salticidae_Lib_Paths) -lsalticidae $(Salticidae_Include_Paths) @echo "LINK <= $@"
时间: 2024-04-11 17:29:50 浏览: 119
这段代码是一个Makefile规则,用于编译生成三个可执行文件:server、client和keys。每个可执行文件都依赖于一些对象文件(.o文件)和链接库。在编译过程中,使用CXX变量指定的C++编译器进行编译,并使用LDLIBS变量指定的链接库进行链接。
对于server可执行文件,它依赖于App/Server.o和$(Nsgx_App_Cpp_Objects)这些对象文件。编译命令将这些对象文件和链接库一起链接成一个可执行文件,并使用@echo语句输出链接命令。
类似地,client可执行文件依赖于App/Client.o、App/Stats.o、App/Signs.o、App/Sign.o、App/Nodes.o、App/NodeInfo.o、App/KeysFun.o和App/Transaction.o这些对象文件。keys可执行文件依赖于App/Keys.o和App/KeysFun.o这两个对象文件。
每个可执行文件的编译命令都类似,将依赖的对象文件和链接库一起链接成可执行文件,并使用@echo语句输出链接命令。
相关问题
# Non-SGX files Nsgx_App_Cpp_Files := $(wildcard App/*.cpp) Nsgx_App_Cpp_Files := $(filter-out App/test.cpp App/foo.cpp App/Start.cpp App/App.cpp App/Keys.cpp App/Client.cpp App/Server.cpp, $(Nsgx_App_Cpp_Files)) # Includes SGX files App_Cpp_Files := $(Nsgx_App_Cpp_Files) App/sgx_utils/sgx_utils.cpp App_Include_Paths := -IApp -I$(SGX_SDK)/include $(Salticidae_Include_Paths) App_C_Flags := $(SGX_COMMON_CFLAGS) -fPIC -Wno-attributes $(App_Include_Paths)
这部分代码定义了一些变量和规则,用于编译非SGX相关的文件。
首先,使用`wildcard`函数获取`App`目录下的所有`.cpp`文件,并将结果保存在`Nsgx_App_Cpp_Files`变量中。然后使用`filter-out`函数将特定的文件(`App/test.cpp`, `App/foo.cpp`, `App/Start.cpp`, `App/App.cpp`, `App/Keys.cpp`, `App/Client.cpp`, `App/Server.cpp`)从`Nsgx_App_Cpp_Files`中过滤掉。
接下来,定义了一个包含SGX文件的变量,将之前过滤得到的`Nsgx_App_Cpp_Files`和`App/sgx_utils/sgx_utils.cpp`文件合并在一起。
然后,定义了一个包含头文件路径的变量,包括`App`目录和指定的SGX SDK目录的include路径。
最后,定义了一个包含编译标志的变量,其中包括SGX公共编译标志、-fPIC标志、禁用某些属性的警告标志和之前定义的头文件路径。
这部分代码的作用是为非SGX相关的文件提供编译所需的文件列表和编译标志。
sgx.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is #error This file was generated by a newer version of protoc which is ^~~~~ sgx.pb.h:13:2: error: #error incompatible with your Protocol Buffer headers. Please update #error incompatible with your Protocol Buffer headers. Please update ^~~~~ sgx.pb.h:14:2: error: #error your headers. #error your headers. ^~~~~ In file included from NetClient.cpp:6:0: sgx.pb.h:25:10: fatal error: google/protobuf/generated_message_table_driven.h: No such file or directory #include <google/protobuf/generated_message_table_driven.h>
这个错误提示是因为你使用的 sgx.pb.h 文件是由新版本的 protoc 生成的,但是你的 Protocol Buffer 头文件版本与其不兼容。你需要更新你的 Protocol Buffer 头文件版本来解决这个问题。你可以尝试升级你的 Protocol Buffer 版本或者降低你使用的 protoc 版本来解决这个问题。
阅读全文