相关疑难解决方法(0)

如何在Make中使用pkg-config

我想编译最简单的GTK程序.我可以使用命令行编译它:

gcc $(pkg-config --cflags --libs gtk+-3.0)  main.c -o main.o
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用Make它不起作用:

CFLAGS=-g -Wall -Wextra $(pkg-config --cflags)
LDFLAGS=$(pkg-config --libs gtk+-3.0)
CC=gcc

SOURCES=$(wildcard *.c)
EXECUTABLES=$(patsubst %.c,%,$(SOURCES))

all: $(EXECUTABLES)
Run Code Online (Sandbox Code Playgroud)

它告诉我这个:

gcc -g -Wall -Wextra    -c -o main.o main.c
main.c:1:21: fatal error: gtk/gtk.h: No such file or directory
 #include <gtk/gtk.h>
                     ^
compilation terminated.
<builtin>: recipe for target 'main.o' failed
make: *** [main.o] Error 1
Run Code Online (Sandbox Code Playgroud)

我在哪里将Make(pkg-config --cflags --libs gtk + -3.0)粘贴在Makefile中以使其编译?

非常感谢你的帮助.

c gtk gcc makefile

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

如何使用pkg-config静态链接库

我想静态链接pkg-config找到的libpng.

pkg-config --libs --static libpng
Run Code Online (Sandbox Code Playgroud)

输出

-L/usr/local/Cellar/libpng/1.6.15/lib -lpng16 -lz

libpng16.a libpng16.dylib在这个目录中都有,如果我使用这些标志,库就会动态链接.

我怎么能告诉pkg-config或链接器(最好是以某种便携式方式),我真的希望它静态链接?

我尝试-static在pkg-config的标志之前添加,但这使得clang ld尝试并且无法链接"crt0.o".

pkg-config static-linking

7
推荐指数
3
解决办法
9650
查看次数

架构 x86_64 (clang) 的未定义符号

我正在尝试使用 OpenSSL 从 ac 程序计算 sha1 哈希。我正在 Mac OS X Yosemite 上使用 Intel i7(所以 64 位)使用 clang 进行编译。

相关的一段代码大致如下:

#include <openssl/evp.h>
...
unsigned char outHash[20]; 
hash("SHA1","abcd", 20, outHash);
Run Code Online (Sandbox Code Playgroud)

问题是,当使用来自 的“散列”函数时openssl/evp.h,使用 clang 进行编译会产生以下错误:

#include <openssl/evp.h>
...
unsigned char outHash[20]; 
hash("SHA1","abcd", 20, outHash);
Run Code Online (Sandbox Code Playgroud)

所以看起来链接器没有找到 OpenSSL(“哈希”函数未识别)。有想法该怎么解决这个吗?

编辑:

事实证明,我试图使用一个不存在的函数(“哈希”) - 抱歉误导您。

但是我仍然有同样的问题:包括openssl/evp.h似乎不起作用。

这是我正在使用的哈希函数,它使用 evp 来执行 sha1 编码:

unsigned int hash(const char *mode, const char* dataToHash, size_t dataSize, unsigned char* outHashed) {
    unsigned int md_len = -1;
    const EVP_MD *md = …
Run Code Online (Sandbox Code Playgroud)

c macos openssl llvm clang

5
推荐指数
1
解决办法
6552
查看次数

OpenSSL链接未定义的引用'EVP_MD_CTX_new'和'... fre'

我正在尝试使用openssl库提供的哈希算法.我安装了openssl和libssl-dev.版本是1.1.0f.我尝试运行openssl.org网站的示例代码:

#include <stdio.h>

#include <openssl/evp.h>

int main(int argc, char *argv[]){
EVP_MD_CTX *mdctx;
const EVP_MD *md;
char mess1[] = "Test Message\n";
char mess2[] = "Hello World\n";
unsigned char md_value[EVP_MAX_MD_SIZE];
int md_len, i;

if(!argv[1]) {
    printf("Usage: mdtest digestname\n");
    exit(1);
 }

md = EVP_get_digestbyname(argv[1]);

if(!md) {
    printf("Unknown message digest %s\n", argv[1]);
    exit(1);
}

mdctx = EVP_MD_CTX_new();
EVP_DigestInit_ex(mdctx, md, NULL);
EVP_DigestUpdate(mdctx, mess1, strlen(mess1));
EVP_DigestUpdate(mdctx, mess2, strlen(mess2));
EVP_DigestFinal_ex(mdctx, md_value, &md_len);
EVP_MD_CTX_free(mdctx);

printf("Digest is: ");
for (i = 0; i < md_len; i++)
    printf("%02x", md_value[i]);
printf("\n"); …
Run Code Online (Sandbox Code Playgroud)

c linux linker openssl

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

在Ubuntu 11.10上编译C++和OpenSSL

我在Ubuntu 11.10上编译我的C++和OpenSSL项目时遇到了严重的问题.编译命令是:

g++ -Wall -lssl -lm -lcrypto -I ./src ./src/server.cpp -o ./bin/server
Run Code Online (Sandbox Code Playgroud)

我收到这些错误:

server.cpp:(.text+0x8ff): undefined reference to `RSA_new'
server.cpp:(.text+0x92d): undefined reference to `PEM_read_RSAPrivateKey'
server.cpp:(.text+0xa85): undefined reference to `RSA_size'
server.cpp:(.text+0xaa1): undefined reference to `RSA_size'
server.cpp:(.text+0xae7): undefined reference to `RSA_private_decrypt'
server.cpp:(.text+0xd84): undefined reference to `BF_set_key'
server.cpp:(.text+0xf1d): undefined reference to `BF_ecb_encrypt'
server.cpp:(.text+0x13c6): undefined reference to `BF_ecb_encrypt'
collect2: ld returned 1 exit status
make: *** [server] Error 1
Run Code Online (Sandbox Code Playgroud)

我成功安装了openssllibssl-dev,但问题仍然存在.我尝试使用内核3.0在Linux Mint 12上编译项目,我遇到了同样的问题.在我使用内核2.6的旧Linux操作系统上,项目编译并运行良好(使用相同的Makefile和相同的源代码).请帮我!

c++ openssl g++

3
推荐指数
1
解决办法
4584
查看次数

标签 统计

c ×3

openssl ×3

c++ ×1

clang ×1

g++ ×1

gcc ×1

gtk ×1

linker ×1

linux ×1

llvm ×1

macos ×1

makefile ×1

pkg-config ×1

static-linking ×1