1

我已经下载了 GNSDK ver.3.2.0.422。

我试图构建一些示例应用程序。但是我遇到了类似以下的错误...

gcc  -arch i386 -m64 -mmacosx-version-min=10.5  -lstdc++  -o sample _output/mac_x86-64/debug/main.o libgnsdk_link.3.2.0.dylib libgnsdk_lookup_local.3.2.0.dylib libgnsdk_storage_sqlite.3.2.0.dylib libgnsdk_manager.3.2.0.dylib  -lstdc++ -lpthread -ldl
ld: warning: ld: warning: ignoring file libgnsdk_lookup_local.3.2.0.dylib, file was built for x86_64 which is not the architecture being linked (i386): libgnsdk_lookup_local.3.2.0.dylibignoring file libgnsdk_link.3.2.0.dylib, file was built for x86_64 which is not the architecture being linked (i386): libgnsdk_link.3.2.0.dylib

ld: warning: ignoring file libgnsdk_storage_sqlite.3.2.0.dylib, file was built for x86_64 which is not the architecture being linked (i386): libgnsdk_storage_sqlite.3.2.0.dylib
ld: warning: ignoring file libgnsdk_manager.3.2.0.dylib, file was built for x86_64 which is not the architecture being linked (i386): libgnsdk_manager.3.2.0.dylib
Undefined symbols for architecture i386:
    "_gnsdk_link_initialize", referenced from:
  __init_gnsdk in main.o
    "_gnsdk_link_query_content_free", referenced from:
  __fetch_image in main.o
    "_gnsdk_link_query_content_retrieve", referenced from:
  __fetch_image in main.o
    "_gnsdk_link_query_create", referenced from:
  __perform_sample_query in main.o
    "_gnsdk_link_query_option_set", referenced from:
  __perform_sample_query in main.o
    "_gnsdk_link_query_release", referenced from:
  __perform_sample_query in main.o
    "_gnsdk_link_query_set_gdo", referenced from:
  __perform_sample_query in main.o
    "_gnsdk_link_shutdown", referenced from:
  __shutdown_gnsdk in main.o
    "_gnsdk_manager_error_info", referenced from:
  __display_error in main.o
    "_gnsdk_manager_gdo_deserialize", referenced from:
  __perform_sample_query in main.o
    "_gnsdk_manager_gdo_release", referenced from:
  __perform_sample_query in main.o
    "_gnsdk_manager_get_build_date", referenced from:
  __display_gnsdk_product_info in main.o
    "_gnsdk_manager_get_product_version", referenced from:
  __display_gnsdk_product_info in main.o
    "_gnsdk_manager_initialize", referenced from:
  __init_gnsdk in main.o
    "_gnsdk_manager_locale_load", referenced from:
  __set_locale in main.o
    "_gnsdk_manager_locale_release", referenced from:
  __set_locale in main.o
    "_gnsdk_manager_locale_set_group_default", referenced from:
  __set_locale in main.o
    "_gnsdk_manager_logging_enable", referenced from:
  __enable_logging in main.o
    "_gnsdk_manager_shutdown", referenced from:
  __shutdown_gnsdk in main.o
    "_gnsdk_manager_string_free", referenced from:
  __shutdown_gnsdk in main.o
    "_gnsdk_manager_user_create", referenced from:
  __get_user_handle in main.o
    "_gnsdk_manager_user_create_new", referenced from:
  __get_user_handle in main.o
    "_gnsdk_manager_user_release", referenced from:
  __shutdown_gnsdk in main.o
    "_gnsdk_storage_sqlite_initialize", referenced from:
  __init_gnsdk in main.o
    "_gnsdk_storage_sqlite_shutdown", referenced from:
  __shutdown_gnsdk in main.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [sample-debug] Error 1

我检查了 makefile 并发现 platform_vars_macos.mk 可能不正确。他们是...

# check cross-compiling setting
ifeq ($(ARCH),)
    IMPLDIR = mac
    IMPLARCH = x86-64
    ARCHFLAGS = -arch i386 -m64 $(MIN_VERSION_OSX_FLAG)

else ifneq ($(filter x86_64 x86-64 x64,$(ARCH)),)
    IMPLDIR = mac
    IMPLARCH = x86-64
    ARCHFLAGS = -arch i386 -m64 $(MIN_VERSION_OSX_FLAG)

我觉得他们应该...

# check cross-compiling setting
ifeq ($(ARCH),)
    IMPLDIR = mac
    IMPLARCH = x86-64
    ARCHFLAGS = -arch x86_64 -m64 $(MIN_VERSION_OSX_FLAG)

else ifneq ($(filter x86_64 x86-64 x64,$(ARCH)),)
    IMPLDIR = mac
    IMPLARCH = x86-64
    ARCHFLAGS = -arch x86_64 -m64 $(MIN_VERSION_OSX_FLAG)

如果我的想法是正确的,请在下一个版本中修复它们。

4

0 回答 0