构建 git-credential-libsecret 时遇到问题:未知类型名称“SecretService”

问题描述 投票:0回答:1

我正在尝试通过在

git-credential-libsecret.c
上运行
/usr/share/doc/git/contrib/credential/libsecret
来编译
sudo make
中的
Makefile

但是,这会失败并显示以下输出:

gcc -g -O2 -Wall  -pthread -I/usr/include/libsecret-1 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include   -o git-credential-libsecret.o -c git-credential-libsecret.c
git-credential-libsecret.c: In function ‘keyring_get’:
git-credential-libsecret.c:87:2: error: unknown type name ‘SecretService’
  SecretService *service = NULL;
  ^
git-credential-libsecret.c:95:2: warning: implicit declaration of function ‘secret_service_get_sync’ [-Wimplicit-function-declaration]
  service = secret_service_get_sync(0, NULL, &error);
  ^
git-credential-libsecret.c:95:10: warning: assignment makes pointer from integer without a cast [enabled by default]
  service = secret_service_get_sync(0, NULL, &error);
          ^
git-credential-libsecret.c:103:2: warning: implicit declaration of function ‘secret_service_search_sync’ [-Wimplicit-function-declaration]
  items = secret_service_search_sync(service,
  ^
git-credential-libsecret.c:106:9: error: ‘SECRET_SEARCH_LOAD_SECRETS’ undeclared (first use in this function)
         SECRET_SEARCH_LOAD_SECRETS | SECRET_SEARCH_UNLOCK,
         ^
git-credential-libsecret.c:106:9: note: each undeclared identifier is reported only once for each function it appears in
git-credential-libsecret.c:106:38: error: ‘SECRET_SEARCH_UNLOCK’ undeclared (first use in this function)
         SECRET_SEARCH_LOAD_SECRETS | SECRET_SEARCH_UNLOCK,
                                      ^
git-credential-libsecret.c:117:3: error: unknown type name ‘SecretItem’
   SecretItem *item;
   ^
git-credential-libsecret.c:118:3: error: unknown type name ‘SecretValue’
   SecretValue *secret;
   ^
git-credential-libsecret.c:122:3: warning: implicit declaration of function ‘secret_item_get_secret’ [-Wimplicit-function-declaration]
   secret = secret_item_get_secret(item);
   ^
git-credential-libsecret.c:122:10: warning: assignment makes pointer from integer without a cast [enabled by default]
   secret = secret_item_get_secret(item);
          ^
git-credential-libsecret.c:123:3: warning: implicit declaration of function ‘secret_item_get_attributes’ [-Wimplicit-function-declaration]
   attributes = secret_item_get_attributes(item);
   ^
git-credential-libsecret.c:123:14: warning: assignment makes pointer from integer without a cast [enabled by default]
   attributes = secret_item_get_attributes(item);
              ^
git-credential-libsecret.c:131:3: warning: implicit declaration of function ‘secret_value_get_text’ [-Wimplicit-function-declaration]
   s = secret_value_get_text(secret);
   ^
git-credential-libsecret.c:131:5: warning: assignment makes pointer from integer without a cast [enabled by default]
   s = secret_value_get_text(secret);
     ^
git-credential-libsecret.c:138:3: warning: implicit declaration of function ‘secret_value_unref’ [-Wimplicit-function-declaration]
   secret_value_unref(secret);
   ^
make: *** [git-credential-libsecret.o] Error 1

据我所知,这些错误源于

unknown type name
问题,并且随着
unknown type
稍后被“错误”使用,这些错误逐渐扩大。

然而,据我所知,这些类型在源文件中提供的位置中定义得非常好:

grep -Enr "#include.*secret\.h" git-credential-libsecret.c 
30:#include <libsecret/secret.h>

根据

gcc
调用,这将在
/usr/include/libsecret-1
找到,并且确实:

ls /usr/include/libsecret-1/libsecret
secret-attributes.h  secret-enum-types.h  secret-item.h      secret-paths.h   secret-schema.h   secret-service.h  secret-value.h
secret-collection.h  secret.h             secret-password.h  secret-prompt.h  secret-schemas.h  secret-types.h

此标头本身不定义

SecretService
grep -E "^typedef" secret.h
没有给出任何内容),因为
SecretService
是在
secret-service.h
:

中定义的
grep -nE "^typedef.*SecretService;" /usr/include/libsecret-1/libsecret/secret-service.h 
53:typedef struct _SecretService        SecretService;

并且

secret-service
包含在
secret.h
中:

grep -En "^#include.*service" /usr/include/libsecret-1/libsecret/secret.h 
40:#include <libsecret/secret-service.h>

类似的研究对

SecretItem
SecretValue
产生相同的结果。

我错过了什么吗?为什么文件没有按预期构建?

c git github makefile header-files
1个回答
0
投票

我也在纠结这个问题...

© www.soinside.com 2019 - 2024. All rights reserved.