Как собрать VSFTPD для at91sam9263

Кросс-компиляция libcap

Для запуска VSFTP на Debian 5.0.3 мне потребовалась библиотека libcap, усли у вас ее нет, то ее надо скомпилировать под таргет пользуясь нижеследующими инструкциями. Если библиотека libcap у вас уже есть то этот раздел вы можете пропустить. Я использовал libcap-2.11. Скачанный архив я распаковал в папку /home/dmitry/ARM/libcap-2.11.
Для выполнения кросс-компиляции нам необходимо внести некоторые изменения в исходники libcap-2.11:

  1. Редактируем файл Make.Rules и патчим его следующим diff-файлом


    
     --- libcap-2.11/Make.Rules    2008-07-10 10:22:22.000000000 +0400
     +++ libcap-2.11/Make.Rules  2009-06-15 16:27:58.000000000 +0400
     @@ -20,8 +20,8 @@
      inc_prefix=$(lib_prefix)
      man_prefix=$(prefix)/share
      else
     -prefix=/usr
     -exec_prefix=
     +prefix=/usr/cross/libcap
     +exec_prefix=$(prefix)
      lib_prefix=$(exec_prefix)
      inc_prefix=$(prefix)
      man_prefix=$(prefix)/share
     @@ -42,11 +42,11 @@
      
      # Compilation specifics
      
     -CC := gcc
     +CC := /usr/cross/arm-linux/bin/arm-linux-gcc #place path to your cross compiler here
      CFLAGS := -O2
      BUILD_CC := $(CC)
      BUILD_CFLAGS := $(CFLAGS)
     -AR := ar
     +AR := /usr/cross/arm-linux/bin/arm-linux-ar #place path to your cross accembler here
      RANLIB := ranlib
      DEBUG = -g #-DDEBUG
      WARNINGS=-fPIC -Wall -Wwrite-strings \
  2. В файле libcap/_makenames.c найдите строку

    #include <sys/capability.h>
    и замените ее на
    #include "./include/sys/capability.h"

  3. Откройте файл libcap/Makefile и пропачьте его следующим diff-файлом.
    
     --- libcap-2.11/libcap/Makefile               2008-07-10 10:18:40.000000000 +0400
     +++ libcap-2.11/libcap/Makefile             2009-06-15 17:06:41.000000000 +0400
     @@ -10,6 +10,12 @@
      STALIBNAME=$(LIBTITLE).a
      #
      
     +BUILD_CC := gcc
     +
     +
     +
      FILES=cap_alloc cap_proc cap_extint cap_flag cap_text cap_file
      
      INCLS=libcap.h cap_names.h $(INCS)
     @@ -17,7 +23,7 @@
      MAJLIBNAME=$(LIBNAME).$(VERSION)
      MINLIBNAME=$(MAJLIBNAME).$(MINOR)
      GPERF_OUTPUT = _caps_output.gperf
     -LDFLAGS += -lattr
     +#LDFLAGS += -lattr
      
      all: $(MINLIBNAME) $(STALIBNAME)
  4. Откройте файл libcap/include/sys/capability.h и найдите следующую строку

    #include <linux/capability.h>
    и замените ее на
    #include "../linux/capability.h"

  5. Затем выполните команду

    make

Кросс-компиляция VSFTPD

CC = gcc
замените ее на
CC = arm-linux-gcc

Это ваш кросс-компилятор, если вы пользуетесь каким то другим кросс-компилятором, то здесь надо прописать его имя.

  1. Теперь мы можем приступить к сборке VSFTPD. Я использовал vsftpd-2.1.2.Скамчанный архив я распаковал в папку /home/dmitry/ARM/vsftpd-2.1.2.
  2. Для успешной уросс-компиляции необходимо провести изменения в исходных файлах.
  3. Откройте Makefile и отредактируйте вторую строку.
  4. Откройте vsf_findlibs.sh и ищите строки 48-49
  5. elif locate_library /lib/libcap.so.2; then
    echo "/lib/libcap.so.2";
    замените их на
    elif locate_library /home/dmitry/ARM/libcap-2.11/libcap/libcap.so.2; then
    echo "/home/dmitry/ARM/libcap-2.11/libcap/libcap.so.2";
  6. Теперь выполните команду
  7. make
  8. Готовый исполняемый файл vsftpd нужно поместить в папку /sbin, а файл vsftpd.conf в папку /etc на вашей ARM платформе.

Комментарии

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Syntax highlight code surrounded by the {syntaxhighlighter SPEC}...{/syntaxhighlighter} tags, where SPEC is a Syntaxhighlighter options string or "class="OPTIONS" title="the title".
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <p> <span> <s> <strike> <div> <h1> <h2> <h3> <h4> <h5> <h6> <img> <map> <area> <hr> <br> <br /> <ul> <ol> <li> <dl> <dt> <dd> <table> <caption> <tbody> <tr> <td> <em> <b> <u> <i> <strong> <del> <ins> <sub> <sup> <quote> <blockquote> <pre> <address> <code> <cite> <embed> <object> <param> <strike>
  • Использовать как разделитель страниц.

Подробнее о форматировании