我想编译最简单的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中以使其编译?
非常感谢你的帮助.
我想静态链接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".
我正在尝试使用 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) 我正在尝试使用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) 我在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)
我成功安装了openssl和libssl-dev,但问题仍然存在.我尝试使用内核3.0在Linux Mint 12上编译项目,我遇到了同样的问题.在我使用内核2.6的旧Linux操作系统上,项目编译并运行良好(使用相同的Makefile和相同的源代码).请帮我!