我在编译一个开源项目时, 有一个参数是:
-liconv
但是,我在源里面,找不到libiconv-dev这个包。
现在,代码编译不过去,哪位知道是为什么吗?
补充一点:
我用的是debian 7
源是网易的
下载源代码,手动编译安装,搞定。
aptitude search iconv
你会看到的
应答。iconv是在glibc里的。我查了一下。
● ldd /usr/bin/iconv
linux-vdso.so.1 (0x00007fffaafd7000)
libc.so.6 => /lib64/libc.so.6 (0x00007f163eb69000)
/lib64/ld-linux-x86-64.so.2 (0x00007f163ef16000)
而glibc里边有iconv.h,并没有
libiconv.so
● equery f glibc G iconv
/usr/bin/iconv
/usr/include/iconv.h
/usr/sbin/iconvconfig
的确有单独的libiconv。
* dev-libs/libiconv
Available versions: ~*1.13.1 1.14 ~1.14-r1 {+static-libs ABI_MIPS="n32 n64 o32" ABI_X86="32 64 x32"}
Homepage: http://www.gnu.org/software/libiconv/
Description: GNU charset conversion library for libc which doesn't implement it
我不用Debian,可能包名字不大一样。至少。得提供一下编译的是什么。
增补。我特地找了一下gentoo-zh overlay。它里边有个patch是这样的:
● dog /var/lib/layman/gentoo-zh/app-emulation/skyeye/files/skyeye-iconv.patch
From bd29f32f6946420d446a4250b171cd2da3f7d6ca Mon Sep 17 00:00:00 2001
From: Dennis Lan <dennis.yxun@gmail.com>
Date: Mon, 20 Aug 2012 18:25:29 +0800
Subject: [PATCH] iconv: remove hardcoded linking to libaray
sys-libs/glibc-2.15-r2 already including iconv functionality
and there is not libiconv.{so,a} anymore
Signed-off-by: Dennis Lan <dennis.yxun@gmail.com>
---
android/objs/emulator_libui/Makefile.am | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/android/objs/emulator_libui/Makefile.am b/android/objs/emulator_libui/Makefile.am
index a454878..596d969 100644
--- a/android/objs/emulator_libui/Makefile.am
+++ b/android/objs/emulator_libui/Makefile.am
@@ -175,7 +175,7 @@ libemulator_libui_la_SOURCES = $(emulator_libui) $(main_dir)
if WIN32
libemulator_libui_la_LDFLAGS = -no-undefined -shared -module -Xlinker --enable-auto-import -Xlinker -L$(top_srcdir)/common/.libs/ -Xlinker -lcommon -Xlinker -L$(top_srcdir)/android/objs/emulator_common/.libs/ -Xlinker -lemulator_common -Xlinker -L/MinGW/GnuWin32/bin -Xlinker -llibiconv2 -Xlinker -lgdi32 -Xlinker -lws2_32 -Xlinker -lkernel32 -Xlinker -lkernel32 -Xlinker -lole32 -Xlinker -lkernel32 -Xlinker -lgdi32 -Xlinker -luuid -Xlinker -luser32 -Xlinker -lshell32 -Xlinker --export-all-symbol
else
-libemulator_libui_la_LDFLAGS = -module -L$(top_srcdir)/common -lcommon -L$(top_srcdir)/android/objs/emulator_common/ -lemulator_common -L/usr/local/lib -liconv
+libemulator_libui_la_LDFLAGS = -module -L$(top_srcdir)/common -lcommon -L$(top_srcdir)/android/objs/emulator_common/ -lemulator_common -L/usr/local/lib
endif
--
1.7.9.rc2
可以看见里边干掉了 -liconv(感觉之前我一直在废话啊)
简而言之:gentoo-zh 里有个/var/lib/layman/gentoo-zh/app-emulation/skyeye,去参考一下会比较好
当然更重要的是我在执行ebuild的时候看见那么一句话:
* The CODE QULITY of skyeye is _TOTALLY_ _SHIT_ , don't report any bug to the maintainer, please flood the upstream.