编译 Ethos 框架时出错

发布于 2024-12-07 16:57:23 字数 986 浏览 2 评论 0原文

我正在尝试在 Mac OS Lion 上制作 Ethos 框架。 git://git.dronelabs.com/ethos

这是 ./configure 的结果:

Ethos 0.2.3 
  Prefix...................:  /usr/local
  Debug level..............:  minimum
  Maintainer Compiler flags:  no
  Build API reference......:  no
  Enable test suite........:  yes
Bindings
  GObject Introspection....:  no
  Vala Bindings............:  no
  Python Bindings..........:  no
  Javascript Bindings......:  no
Now type `make' to compile ethos

然后我执行 sudo make,编译时出现错误:

Making all in c-plugins
CC    libsample.so
Undefined symbols for architecture x86_64:
"_ethos_plugin_get_type", referenced from:
   _my_plugin_get_type in cc3gPLKS.o
   _my_plugin_class_init in cc3gPLKS.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make[3]: *** [libsample.so] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

如何修复它?

I'm trying make Ethos framework on Mac OS Lion.
git://git.dronelabs.com/ethos

Here result of ./configure:

Ethos 0.2.3 
  Prefix...................:  /usr/local
  Debug level..............:  minimum
  Maintainer Compiler flags:  no
  Build API reference......:  no
  Enable test suite........:  yes
Bindings
  GObject Introspection....:  no
  Vala Bindings............:  no
  Python Bindings..........:  no
  Javascript Bindings......:  no
Now type `make' to compile ethos

Then I do sudo make, and while compiling arise an error:

Making all in c-plugins
CC    libsample.so
Undefined symbols for architecture x86_64:
"_ethos_plugin_get_type", referenced from:
   _my_plugin_get_type in cc3gPLKS.o
   _my_plugin_class_init in cc3gPLKS.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make[3]: *** [libsample.so] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

How can I fix it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

青瓷清茶倾城歌 2024-12-14 16:57:23

我发现经过以下修改后,Ethos可以安装在Mac OS X 10.7上:

1)编辑文件:ethos_dir/ethos/ethos_manager.c (:194):

FROM:

while (NULL != (filename = g_dir_read_name (dir))) {
  if (g_str_has_suffix (filename, "." G_MODULE_SUFFIX)) {
    abspath = g_build_filename (loaders_dir, filename, NULL);
    loader = ethos_manager_create_plugin_loader (manager, abspath);
    if (loader != NULL)
       loaders = g_list_prepend (loaders, loader);
    g_free (abspath);
  }
}

TO:

while (NULL != (filename = g_dir_read_name (dir))) {
#ifdef __APPLE__
   gchar* suffix = "dylib"; // to able find ethos-plugin-loader
#else
   gchar* suffix = ("." G_MODULE_SUFFIX);
#endif
   if (g_str_has_suffix (filename, suffix)) {
     abspath = g_build_filename (loaders_dir, filename, NULL);
     loader = ethos_manager_create_plugin_loader (manager, abspath);
     if (loader != NULL)
       loaders = g_list_prepend (loaders, loader);
     g_free (abspath);
   }
}

2)禁用make for:ethos-dir/tests,
将 Makefile.am 更改

为:

line#: contents 
02: SUBDIRS = c-plugins manager-dep
30: manager_sources = manager.c
31: plugin_info_sources = plugin-info.c

TO:

02: #SUBDIRS = c-plugins manager-dep
30: #manager_sources = manager.c
31: #plugin_info_sources = plugin-info.c

这是必要的,因为在制作过程中找不到 libethos。

I found that Ethos can be installed on Mac OS X 10.7 after the following modifications:

1)Edit file: ethos_dir/ethos/ethos_manager.c (:194):

FROM:

while (NULL != (filename = g_dir_read_name (dir))) {
  if (g_str_has_suffix (filename, "." G_MODULE_SUFFIX)) {
    abspath = g_build_filename (loaders_dir, filename, NULL);
    loader = ethos_manager_create_plugin_loader (manager, abspath);
    if (loader != NULL)
       loaders = g_list_prepend (loaders, loader);
    g_free (abspath);
  }
}

TO:

while (NULL != (filename = g_dir_read_name (dir))) {
#ifdef __APPLE__
   gchar* suffix = "dylib"; // to able find ethos-plugin-loader
#else
   gchar* suffix = ("." G_MODULE_SUFFIX);
#endif
   if (g_str_has_suffix (filename, suffix)) {
     abspath = g_build_filename (loaders_dir, filename, NULL);
     loader = ethos_manager_create_plugin_loader (manager, abspath);
     if (loader != NULL)
       loaders = g_list_prepend (loaders, loader);
     g_free (abspath);
   }
}

2)Disable making for: ethos-dir/tests,
Change in Makefile.am

FROM:

line#: contents 
02: SUBDIRS = c-plugins manager-dep
30: manager_sources = manager.c
31: plugin_info_sources = plugin-info.c

TO:

02: #SUBDIRS = c-plugins manager-dep
30: #manager_sources = manager.c
31: #plugin_info_sources = plugin-info.c

This is necessary because, while making process it cannot find libethos.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文