我正在尝试使用 gRPC 库,但是我不断收到错误消息,告诉我找不到 .cmake 文件,或者出现链接器错误,可能是由于我的 CMakeLists.txt 造成的。在我下面的示例中,他们将 cmake 中的库简单地称为 gRPC,并且我也尝试了关键字 grpc_cpp_plugin,但是似乎都不起作用。
对于上下文,我使用的是 macOS Mojave,并且我已经使用自制软件安装了 gRPC 库。
Homebrew 在/usr/local/Cellar/grpc/1.22.0.
我在这里使用了适用于另一个项目的 cmake 文件,但是我添加了 protobuf 和 gRPC 库,添加它们后就是我收到错误的时候。同样,部分代码是从上面的链接借用的(特别是 gRPC 文件所在位置的名称)。
我的 CMakeLists.txt 文件
cmake_minimum_required( VERSION 2.8 )
project( gRPC_server )
# setup opencv
find_package( OpenCV REQUIRED )
# SETUP PROTOBUF
set(protobuf_MODULE_COMPATIBLE TRUE)
find_package( Protobuf REQUIRED )
set(_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf)
# SETUP GRPC
find_package( gRPC REQUIRED )
set(_GRPC_GRPCPP_UNSECURE gRPC::grpc++_unsecure)
INCLUDE_DIRECTORIES(${PROTOBUF_INCLUDE_DIR})
# mostly just to set it to the correct compiler
SET(CMAKE_CXX_FLAGS …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过 exec 系列函数运行命令行参数(特别是 echo)。如果我编写自己的可执行文件并运行它,我可以运行 execv 函数,但是如果我尝试运行 touch 或 echo 它会返回 -1
#include <stdio.h>
#include <unistd.h> // exec functions
#include <sys/types.h> // pid_t
#include <sys/wait.h>
#define HIGH 1
#define LOW 0
int digitalWrite(int pin, short type) {
pid_t pid = fork();
if (pid == 0) {
printf("pid == %i\n", pid);
if (type == HIGH) {
char* args[] = {"echo", "1", ">", "/sys/class/gpio/gpio67/value", NULL};
int val = execv(args[0], args);
printf("ran function execl, %i\n", val);
} else {
printf("Unable to do anything but …Run Code Online (Sandbox Code Playgroud)