相关推荐:把busybox编译成一个可执行文件

前言 在嵌入式linux开发中,基本上厂家都已经搭建好了开发环境,但很多时候,都是被裁减过的,有很多我们需要的功能可能是没有的或是不完整的。 例如:为了方便调试知道哪些线程的cpu占用率高,常用到top命令(执行 top 命令后

1.

在package/utils下创建privoxy_lib目录。在wifidog_lib目录下创建一个文件夹src和一个Makefile文件。Makefile文件编写内容如下: # # Copyright (C)2006,2013 OpenWrt.org # # This is freesoftware, licensed under the GNU General Public License v2. # See /LICENSE formore information. #

include$(TOPDIR)/rules.mk

PKG_NAME:=privoxy_lib PKG_VERSION:=3.0.21 PKG_RELEASE:=1

PKG_LICENSE:=GPLv2 PKG_LICENSE_FILES:=LICENSE

PKG_BUILD_DIR :=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)-stable

include$(INCLUDE_DIR)/package.mk

definePackage/privoxy_lib

SECTION:=utils

CATEGORY:=Utilities

DEPENDS:=+libpcre +libpthread +zlib

TITLE:=web proxy with advanced filteringcapabilities endef

definePackage/privoxy_lib/description

Privoxy is a web proxy with advancedfiltering capabilities for

protecting privacy, modifying web pagecontent, managing cookies,

controlling access, and removing ads,banners, pop-ups and other

obnoxious Internet junk. Privoxy has avery flexible configuration

and can be customized to suit individualneeds and tastes. Privoxy

has application for both stand-alonesystems and multi-user networks. endef

defineBuild/Prepare

mkdir -p $(PKG_BUILD_DIR)

$(CP) ./src/* $(PKG_BUILD_DIR)/ endef

defineBuild/Configure endef

defineBuild/Compile

$(MAKE) -C $(PKG_BUILD_DIR) \

CC="$(TARGET_CC)" \

CFLAGS="$(TARGET_CFLAGS)-Wall" \

LDFLAGS="$(TARGET_LDFLAGS)" endef

definePackage/privoxy_lib/conffiles /etc/privoxy/config endef

definePackage/privoxy_lib/install

$(INSTALL_DIR) $(1)/usr/bin

$(INSTALL_BIN) $(PKG_BUILD_DIR)/test_libprivoxy$(1)/usr/bin/

$(INSTALL_DIR) $(1)/usr/lib

$(CP) $(PKG_BUILD_DIR)/libprivoxy.so*$(1)/usr/lib/

$(INSTALL_DIR) $(1)/etc/privoxy

$(CP) $(PKG_INSTALL_DIR)/etc/privoxy/*$(1)/etc/privoxy/

$(INSTALL_CONF) ./files/privoxy.config$(1)/etc/privoxy/config endef

$(eval $(callBuildPackage,privoxy_lib))

2.

解压privoxy包进入src目录 Tar xzvf privoxy-3.0.21-stable-src.tar.gz –C src

3.

在src下创建Makefile文件,内容如下: LIB_VERMAJOR = 0 LIB_VERMINOR = 1 LIB_FILENAME =libprivoxy.so

OBJEXT = o

EXTRA_CFLAGS +=-pthread -MD -fPIC -DPIC

LIB_CFLAGS

= $(CFLAGS) $(EXTRA_CFLAGS) -shared LIB_LDFLAGS =$(LDFLAGS) -pthread -Wl,-soname,$(LIB_FILENAME).$(LIB_VERMAJOR).$(LIB_VERMINOR)

privoxy_OBJECTS =actions.$(OBJEXT) cgi.$(OBJEXT)\

cgiedit.$(OBJEXT) cgisimple.$(OBJEXT) deanimate.$(OBJEXT)\

encode.$(OBJEXT) errlog.$(OBJEXT)filters.$(OBJEXT) \

gateway.$(OBJEXT) jbsockets.$(OBJEXT)jcc.$(OBJEXT) \

list.$(OBJEXT) loadcfg.$(OBJEXT)loaders.$(OBJEXT) \

miscutil.$(OBJEXT) parsers.$(OBJEXT)

\

ssplit.$(OBJEXT) urlmatch.$(OBJEXT)pcrs.$(OBJEXT)\

pcre/get.$(OBJEXT)pcre/maketables.$(OBJEXT) pcre/study.$(OBJEXT)\

pcre/pcre.$(OBJEXT)pcre/pcreposix.$(OBJEXT) privoxyapi.$(OBJEXT)

LIB_OBJ =$(privoxy_OBJECTS)

DEFAULT_INCLUDES =-Ipcre

AM_CPPFLAGS +=

COMPILE = $(CC)$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \

$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)

CCLD = $(CC) LINK = $(CCLD)$(AM_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) $(AM_LDFLAGS) \

$(LDFLAGS) -o $@

LIBS = -lnsl

-lz

all: Makefile

libprivoxy

test_libprivoxy

test_libprivoxy:main.o libprivoxy

@rm -f test_libprivoxy

$(LINK) main.o $(LIB_FILENAME).$(LIB_VERMAJOR).$(LIB_VERMINOR)

$(LIBS)

libprivoxy:$(LIB_OBJ)

$(CC) $(LIB_CFLAGS) $(LIB_LDFLAGS)

$(LIB_OBJ) $(LIBS) \

-o $(LIB_FILENAME).$(LIB_VERMAJOR).$(LIB_VERMINOR)

.c.o:

$(CC) $(DEFS) $(AM_CPPFLAGS)$(DEFAULT_INCLUDES) $(INCLUDES) $(CFLAGS)

$(EXTRA_CFLAGS)-c -o $@ $<

clean:

rm -f $(LIB_FILENAME)* *.o 4. 修改src下对应的源代码,同时把files/privoxy.init脚本提供的功能通过lib库提供,这样 lib库需要提供intprivoxy_start (),int privoxy_stop ()。makepackage/privoxy_lib/compile

V=s进行编译生成libprivoxy.so.0.1和测试程序test_libprivoxy

相关推荐:用gcc编译成动态链接库的方法

通过一个例子来介绍如何生成一个动态库。假设有一个头文件so_test.h和三个C文件:test_a.c、test_b.c、test_c.c /* so_test.h*/#include <stdio.h>#include <stdlib.h>void test_a();void test_b();void test_c(); /*

快照源:http://blog.chinaunix.net/uid-26675482-id-4571183.html