2008/11/27

[Linux] Ubuntu 底下編譯 ebtables 失敗

因為工作上的需求,所以要修改 ebtables ,就自已先用 apt-get source 下載 ebtables 的 source 下來 compile 。結果在 ebtables 還沒有修改的情況下就不能 compile 。

錯誤訊息是:

  /usr/bin/ld: ebtables: hidden symbol `__stack_chk_fail_local' in /usr/lib/libc_nonshared.a(stack_chk_fail_local.oS) is referenced by DSO
  /usr/bin/ld: final link failed: Nonrepresentable section on output
  collect2: ld returned 1 exit status


這邊 有看到解答:
在 gcc/g++ compile code 的時候沒有加上 -shared flag ,所以後來的 libebtc.so 會出問題。

另外 ubuntu 上面 init.d 也不會是在 /etc/rc.d/ 底下, config 的部份也有搞錯。
這邊包的很馬虎。(小抱怨一下)
--
附上可以 compile 的 Makefile patch:
make 時請下 make LD=gcc


--- Makefile.orig 2008-11-28 15:29:24.000000000 +0800
+++ Makefile 2008-11-28 15:28:44.000000000 +0800
@@ -11,8 +11,8 @@
MANDIR:=/usr/local/man
BINDIR:=/usr/local/sbin
ETCDIR:=/etc
-INITDIR:=/etc/rc.d/init.d
-SYSCONFIGDIR:=/etc/sysconfig
+INITDIR:=/etc/init.d
+SYSCONFIGDIR:=/etc/default
DESTDIR:=

CFLAGS:=-Wall -Wunused
@@ -85,7 +85,8 @@

.PHONY: libebtc
libebtc: $(OBJECTS2)
- $(LD) -shared -soname libebtc.so -o libebtc.so -lc $(OBJECTS2)
+# $(LD) -shared -soname libebtc.so -o libebtc.so -lc $(OBJECTS2)
+ $(LD) -shared libebtc.so -o libebtc.so -lc $(OBJECTS2)

ebtables: $(OBJECTS) ebtables-standalone.o libebtc
$(CC) $(CFLAGS) $(CFLAGS_SH_LIB) -o $@ ebtables-standalone.o -I$(KERNEL_INCLUDES) -L. -Lextensions -lebtc $(EXT_LIBSI) \
@@ -152,13 +153,14 @@
tmp2:=$(shell printf $(SYSCONFIGDIR) | sed 's/\//\\\//g')
tmp3:=$(shell printf $(PIPE) | sed 's/\//\\\//g')
.PHONY: scripts
-scripts: ebtables-save ebtables.sysv ebtables-config
+#ebtables-config
+scripts: ebtables-save ebtables.sysv
cat ebtables-save | sed 's/__EXEC_PATH__/$(tmp1)/g' > ebtables-save_
install -m 0755 -o root -g root ebtables-save_ $(DESTDIR)$(BINDIR)/ebtables-save
cat ebtables.sysv | sed 's/__EXEC_PATH__/$(tmp1)/g' | sed 's/__SYSCONFIG__/$(tmp2)/g' > ebtables.sysv_
install -m 0755 -o root -g root ebtables.sysv_ $(DESTDIR)$(INITDIR)/ebtables
- cat ebtables-config | sed 's/__SYSCONFIG__/$(tmp2)/g' > ebtables-config_
- install -m 0600 -o root -g root ebtables-config_ $(DESTDIR)$(SYSCONFIGDIR)/ebtables-config
+# cat ebtables-config | sed 's/__SYSCONFIG__/$(tmp2)/g' > ebtables-config_
+# install -m 0600 -o root -g root ebtables-config_ $(DESTDIR)$(SYSCONFIGDIR)/ebtables-config
rm -f ebtables-save_ ebtables.sysv_ ebtables-config_

$(MANDIR)/man8/ebtables.8: ebtables.8



--
參考連結:
ebtables 的官網文件

沒有留言:

[Windows] git-bash 底下的工具

因為工作轉到 Windows 平台上的關係,所以很多工具改到 Windows 上面運作,跟著在 TortoiseGit 底下使用 git-bash 來維護自己的專案原始碼。結果就是裝了前面提過的 auto-hotkey 使用熱鍵來提昇自己的平台操作速度; 但除了 hotkey...