Heim php教程 php手册 基于loongson1b开发板(mips架构)移植apache+sqlite3+php5

基于loongson1b开发板(mips架构)移植apache+sqlite3+php5

Jun 06, 2016 pm 07:45 PM
ap mips bezogen auf 开发 架构

环境 编译平台: Ubuntu12.04 交叉工具链: gcc-3.4.6 一、移植 Sqlite 解压 Sqlite-3.6.20.tar.gz 到工具目录下: tarzxfSqlite-3.6.20.tar.gz-C/home/xxx/tools 进入 sqlite-3.6.20 目录中: cdsqlite-3.6.20 1 ): ./configure--host=mipsel-linux( 指定

环境

编译平台:Ubuntu12.04

交叉工具链:gcc-3.4.6

 

一、移植Sqlite

解压Sqlite-3.6.20.tar.gz 到工具目录下:tar zxf Sqlite-3.6.20.tar.gz -C /home/xxx/tools

进入sqlite-3.6.20目录中:cd sqlite-3.6.20

1):./configure --host=mipsel-linux(指定交叉编译工具链) --prefix=/opt/mispel-linux-sqlite

2) make

3)  make install

在执行make中会出现下面错误:

libtool: link: mipsel-linux-gcc -shared .libs/tclsqlite.o -Wl,-rpath -Wl,/opt/sqlite-3.6.20-embedded/.libs -Wl,-rpath -Wl,/opt/mipsel-linux-sqlite/lib ./.libs/libsqlite3.so -L/opt/tcl8.5.15/unix -ltclstub8.5 -lpthread -Wl,-soname -Wl,libtclsqlite3.so -o .libs/libtclsqlite3.so/opt/gcc-4.3-ls232-softfloat/lib/gcc/mipsel-linux/4.3.0/../../../../mipsel-linux/bin/ld: skipping incompatible /opt/gcc-4.3-ls232-softfloat/lib/gcc/mipsel-linux/4.3.0/../../../../mipsel-linux/lib/libtclstub8.5.a when searching for -ltclstub8.5/opt/gcc-4.3-ls232-softfloat/lib/gcc/mipsel-linux/4.3.0/../../../../mipsel-linux/bin/ld: cannot find -ltclstub8.5collect2: ld returned 1 exit statusmake: *** [libtclsqlite3.la] 错误 1

出现:skipping incompatible 一般是不同处理器架构引用了不属于自己处理器架构的库,

上面出现的情况,就是mipsel架构的引用了x86架构的库 libtclstub8.5

所以要源码交叉编译tclsh才能解决上述问题。

解决方法:解压tcl8.5.15-src.tar.gz,并进入源码文件夹tcl8.5.15

执行:

1./configure --host=mipsel-linux --prefix=/opt/mipsel-linux-tclsh

2) make

3) make install

但在 ./configure --host=mipsel-linux --prefix=/opt/mipsel-linux-tclsh

过程中会出现以下错误:

fixstrtod.o: In function `fixstrtod':fixstrtod.c:(.text+0x0): multiple definition of `fixstrtod'strtod.o:strtod.c:(.text+0x0): first defined herecollect2:

ld returned 1 exit statusmake: *** [libtcl8.5.so] 错误 1

执行下面语句:

[root@CaM/opt/tcl-embedded/unix 11:45]#export ac_cv_func_strtod=yes

[root@CaM/opt/tcl-embedded/unix 11:46]#export tcl_cv_strtod_buggy=1

就可以解决了。

编译安装完成后,在mipsel-linux-sqlite目录下分别生成binincludelib目录。

bin/sqlite3lib/libsqlite3.so.0.8.6别拷至文件系统/bin目录与/lib目录下,

并将libsqlite3.so.0.8.6更名为libsqlite3.so.0完成移植。

二、移植apache

$ su (切换到root用户)

1. 本机编译

 $ cd /usr/local/apache-pc/apache_1.3.39

$ ./configure

错误提示:

Configuring for Apache, Version 1.3.39
+ Warning: Your ‘echo’ command is slightly broken.
+ It interprets escape sequences per default. We already
+ tried ‘echo -E’ but had no real success. If errors occur
+ please set the SEO variable in ‘configure’ manually to
+ the required ‘echo’ options, i.e. those which force your
+ ‘echo’ to not interpret escape sequences per default.
+ using installation path layout: Apache (config.layout)
Creating Makefile
Creating Configuration.apaci in src
Syntax error — The configuration file is used only to
define the list of included modules or to set Makefile in src
options or Configure rules, and I don’t see that at all:
`$(SRCDIR)/apaci`
default
default
no
no
no
yes
no
default
no
default
default

解决:

这是由于某些shell脚本文件使用了错误的interpreter,使用下面的命令就可以解决。

# rm -f /bin/sh
# ln -s /bin/bash /bin/sh

 

 $ make

 错误提示:

 基于loongson1b开发板(mips架构)移植apache+sqlite3+php5

 解决:

 将提示的c文件中冲突的函数另改别名:如getline 改成get_line,总共有三个c文件要改。

执行完make后就完成本机编译了,生成了我们需要使用的编译工具。

2. 交叉编译

(注意交叉工具链的环境)

 $ cd /usr/local/apache-mipsel/apache_1.3.39

 $ CC=mipsel-linux-gcc ./configure --prefix=/usr/local/apache-php/apache --enable-module=so

 接着如下修改:
cp /usr/local/apache-pc/apache-1.3.39/src/main/gen_test_char /usr/local/apache-pc/apache-1.3.39/src/main/gen_uri_delims /usr/local/apache-mipsel/apache-1.3.39/src/main/

 $ make

 错误提示:

 基于loongson1b开发板(mips架构)移植apache+sqlite3+php5

 解决:

 $ cp /usr/local/apache-pc/apache_1.3.39/src/main/gen_test_char /usr/local/apache-pc/apache_1.3.39/src/main/gen_uri_delims /usr/local/apache-mipsel/apache_1.3.39/src/main/ 

 make install

 基于loongson1b开发板(mips架构)移植apache+sqlite3+php5

 如图所示,则安装成功

 查看是否为交叉编译文件

 $ file /usr/local/apache-php/apache/bin/httpd

 

 

三、移植PHP

1.  本地编译php

$  cd /usr/local/apache-pc/php-5.2.0

$  ./configure

错误提示 :

 基于loongson1b开发板(mips架构)移植apache+sqlite3+php5

解决 :

sudo apt-get install flex

 

错误提示

 基于loongson1b开发板(mips架构)移植apache+sqlite3+php5

解决 :

sudo apt-get install libxml2-dev

 

$   make

 

2. 交叉编译

安装zlib-1.2.3

$ cd /usr/local/apache-mipsel/zlib-1.2.3

$ CC=mipsel-linux-gcc ./configure --prefix=/usr/local/apache-php/zlib

$ make 

$ make install

$  cd /usr/local/apache-mipsel/php-5.2.0

$ CC=mipsel-linux-gcc ./configure --host=mipsel-linux

--prefix=/usr/local/apache-php/php --with-apxs=/usr/local/apache-php/apache/bin/apxs --enable-pdo=shared --with-sqlite=shared --with-pdo-sqlite=shared --with-zlib --with-zlib-dir=/usr/local/apache-php/zlib --without-iconv

错误提示1

 基于loongson1b开发板(mips架构)移植apache+sqlite3+php5

解决:

打开脚本/usr/local/apache-mipsel/php-5.2.0/configure搜索“$APXS -q 

CFLAGS >/dev/null 2>&1”进行如下代码的注释。  

 基于loongson1b开发板(mips架构)移植apache+sqlite3+php5

错误提示2

 基于loongson1b开发板(mips架构)移植apache+sqlite3+php5

解决 :

安装libxml2-2.6.11

$ cd libxml2-2.6.11

$ CC=mipsel-linux-gcc ./configure --host=mipsel-linux --prefix=/usr/local/apache-php/zlib

$ make

$ make install

./configure

首先修改phpMakefile在开始出添加LDFLAGS += -ldl ,这里是为了链接dlopen

然后修改main/php.h 在开始处添加#define HAVE_LIBDL 1 ,这个宏是为了交叉编译时强制使用dlopen。 

紧接着修改ext/standard/dl.c 这段代码中添加#include  这个是dlopen的头文

件。 

#if defined(HAVE_LIBDL) || HAVE_MACH_O_DYLD_H 

#include  

#include  

#include 

最后修改 sapi/apache/php_apache_http.h

#include "httpd.h" 

#include "http_config.h" 

# include "ap_compat.h" 

#  include "compat.h" 

#include "http_core.h" 

#include "http_main.h" 

#include "http_protocol.h" 

#include "http_request.h" 

#include "http_log.h"    

#include "util_script.h" 

将其修改为#include "/usr/local/apache-php/apache/include/httpd.h"这个路径(这些头文件的目录)

# make (时间有点长,去喝杯水休息一下吧00!!)

错误提示1

 基于loongson1b开发板(mips架构)移植apache+sqlite3+php5

解决:

修改mod_php5.c23行错误头文件加上/usr/local/apache-arm11/apache/include路径

 

错误提示

 基于loongson1b开发板(mips架构)移植apache+sqlite3+php5

解决:

$ cp /opt/gcc-3.4.6-2f/lib/libxml2.so /us r/lib/i386-linux-gnu/

 

错误提示3: 

 基于loongson1b开发板(mips架构)移植apache+sqlite3+php5

解决 :

暂时不知道哪里出了问题,只能注释了其中的代码

 

$ make install 

错误提示 

 基于loongson1b开发板(mips架构)移植apache+sqlite3+php5

解决 :

$mv /usr/local/apache-php/apche/bin/httpd /usr/local/apache-php/apache/bin/httpd_backup

$ cp /usr/local/apache-pc/apache/bin/http /usr/local/apache-php/apache/bin/httpd

 

错误提示

 基于loongson1b开发板(mips架构)移植apache+sqlite3+php5

解决 :

$mv /usr/local/apache-mipsel/php-5.2.0/sapi/cli/php /usr/local/apache-mipsel/php-5.2.0/sapi/cli/php_backup

$ cp /usr/local/apache-pc/php-5.2.0/sapi/cli/php /usr/local/apache-mipsel/php-5.2.0/sapi/cli/

 

不出意外应该成功了,可以去/usr/local/apache-php/php/看下是否有目录

把原来的mips版的phphttpd还原回去 :

cp /usr/local/apache-mips/php-5.2.0/scpi/cli/php_backup /usr/local/apache-php/php/bin/

cp /usr/local/apache-mips/apache/bin/httpd_backup /usr/local/apache-php/apache/bin/httpd

 

四、配置httpd.confphp.ini

l 修改httpd.conf

$ vim /usr/local/apache-php/apache/conf/httpd.conf 添加红色部分

 

#

# DirectoryIndex: Name of the file or files to use as a pre-written HTML

# directory index.  Separate multiple entries with spaces.

#

    DirectoryIndex index.html

    DirectoryIndex index.php

    DirectoryIndex index.php3

    DirectoryIndex index.phtml

 

#

# AccessFileName: The name of the file to look for in each directory

# for access control information.

#

AccessFileName .htaccess

...

 # documents in the realname directory are treated as applications and

 # run by the server when requested rather than as documents sent to the client.

 # The same rules about trailing "/" apply to ScriptAlias directives as to

 # Alias.

 #

 ScriptAlias /cgi-bin/ "/usr/local/apache-php/apache/cgi-bin/"

 ScriptAlias /php5/ "/usr/local/apache-php/php/bin/"

 

 #

 # "/usr/local/apache-php/apache/cgi-bin" should be changed to whatever your ScriptAliased

 # CGI directory exists, if you have that configured.

 ...

  #

  # AddType allows you to tweak mime.types without actually editing it, or to

  # make certain files to be certain types.

  #

    AddType application/x-tar .tgz

    AddType application/x-httpd-php .php3

    AddType application/x-httpd-php .php

    AddType application/x-httpd-php .phtml

 

  #

  # AddEncoding allows you to have certain browsers uncompress

  # information on the fly. Note: Not all browsers support this.

  # Despite the name similarity, the following Add* directives have nothing

l 修改php.ini

$ cp /usr/local/apache-mips/php-5.2.0/php.ini-dist /usr/local/apache-php/php/lib/

$ mv /usr/local/apache-php/lib/php.ini-dist /usr/local/apache-php/lib/php.int

$ vim /usr/local/apache-php/lib/php.int

 

; to possible security problems, if the code is not very well thought of.

register_globals = On

 

; Whether or not to register the old-style input arrays, HTTP_GET_VARS

; and friends.  If you're not using them, it's recommended to turn them off,

 

五、移植至loongson1B

ps进过九九八十一难终于可以烧进板啦

1、打包apachephp

# tar cjf apache-php.tar.bz2 apache-php

2、经nfs共享至开发板

3、开发板建立/usr/local/

4、解压至/usr/local/  :与宿主机一致

5、进入/usr/local/apache-php/apache/bin

# ./apachectl start 

其中需要注意,因为Aapche不支持root用户,所以需要确认Linux文件系统中有nobody组和nogroup组。

在/etc添加两个用户

vi /etc/passwd :

root::0:0:root:/:/bin/bash

nobody::65534:65533:nobody:/:/bin/bash

vi /etc/group :

body::65533:

nogroup::65534:nobody

root::0:

users::100:

正常启动会弹出

 基于loongson1b开发板(mips架构)移植apache+sqlite3+php5

若有其他问题goole、度娘一下,都是常见问题

6、打开浏览器输入http://ip:8080就能看见apache测试画面啦

基于loongson1b开发板(mips架构)移植apache+sqlite3+php5

7、后面加程序名就能运行程序:http://ip:8080/test.php

基于loongson1b开发板(mips架构)移植apache+sqlite3+php5

至此,搭建lasp环境完成...

 

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Vier empfohlene KI-gestützte Programmiertools Vier empfohlene KI-gestützte Programmiertools Apr 22, 2024 pm 05:34 PM

Dieses KI-gestützte Programmiertool hat in dieser Phase der schnellen KI-Entwicklung eine große Anzahl nützlicher KI-gestützter Programmiertools zu Tage gefördert. KI-gestützte Programmiertools können die Entwicklungseffizienz verbessern, die Codequalität verbessern und Fehlerraten reduzieren. Sie sind wichtige Helfer im modernen Softwareentwicklungsprozess. Heute wird Dayao Ihnen 4 KI-gestützte Programmiertools vorstellen (und alle unterstützen die C#-Sprache). https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot ist ein KI-Codierungsassistent, der Ihnen hilft, Code schneller und mit weniger Aufwand zu schreiben, sodass Sie sich mehr auf Problemlösung und Zusammenarbeit konzentrieren können. Git

Erfahren Sie, wie Sie mobile Anwendungen mit der Go-Sprache entwickeln Erfahren Sie, wie Sie mobile Anwendungen mit der Go-Sprache entwickeln Mar 28, 2024 pm 10:00 PM

Tutorial zur Entwicklung mobiler Anwendungen in der Go-Sprache Da der Markt für mobile Anwendungen weiterhin boomt, beginnen immer mehr Entwickler damit, sich mit der Verwendung der Go-Sprache für die Entwicklung mobiler Anwendungen zu befassen. Als einfache und effiziente Programmiersprache hat die Go-Sprache auch großes Potenzial für die Entwicklung mobiler Anwendungen gezeigt. In diesem Artikel wird detailliert beschrieben, wie die Go-Sprache zum Entwickeln mobiler Anwendungen verwendet wird, und es werden spezifische Codebeispiele angehängt, um den Lesern den schnellen Einstieg und die Entwicklung eigener mobiler Anwendungen zu erleichtern. 1. Vorbereitung Bevor wir beginnen, müssen wir die Entwicklungsumgebung und die Tools vorbereiten. Kopf

Welcher KI-Programmierer ist der beste? Entdecken Sie das Potenzial von Devin, Tongyi Lingma und SWE-Agent Welcher KI-Programmierer ist der beste? Entdecken Sie das Potenzial von Devin, Tongyi Lingma und SWE-Agent Apr 07, 2024 am 09:10 AM

Am 3. März 2022, weniger als einen Monat nach der Geburt von Devin, dem weltweit ersten KI-Programmierer, entwickelte das NLP-Team der Princeton University einen Open-Source-KI-Programmierer-SWE-Agenten. Es nutzt das GPT-4-Modell, um Probleme in GitHub-Repositorys automatisch zu lösen. Die Leistung des SWE-Agenten auf dem SWE-Bench-Testsatz ist ähnlich wie die von Devin, er benötigt durchschnittlich 93 Sekunden und löst 12,29 % der Probleme. Durch die Interaktion mit einem dedizierten Terminal kann der SWE-Agent Dateiinhalte öffnen und durchsuchen, die automatische Syntaxprüfung verwenden, bestimmte Zeilen bearbeiten sowie Tests schreiben und ausführen. (Hinweis: Der obige Inhalt stellt eine geringfügige Anpassung des Originalinhalts dar, die Schlüsselinformationen im Originaltext bleiben jedoch erhalten und überschreiten nicht die angegebene Wortbeschränkung.) SWE-A

Was ist die Architektur und das Arbeitsprinzip von Spring Data JPA? Was ist die Architektur und das Arbeitsprinzip von Spring Data JPA? Apr 17, 2024 pm 02:48 PM

SpringDataJPA basiert auf der JPA-Architektur und interagiert mit der Datenbank über Mapping, ORM und Transaktionsmanagement. Sein Repository bietet CRUD-Operationen und abgeleitete Abfragen vereinfachen den Datenbankzugriff. Darüber hinaus nutzt es Lazy Loading, um Daten nur bei Bedarf abzurufen und so die Leistung zu verbessern.

1,3 ms dauert 1,3 ms! Tsinghuas neueste Open-Source-Architektur für mobile neuronale Netzwerke RepViT 1,3 ms dauert 1,3 ms! Tsinghuas neueste Open-Source-Architektur für mobile neuronale Netzwerke RepViT Mar 11, 2024 pm 12:07 PM

Papieradresse: https://arxiv.org/abs/2307.09283 Codeadresse: https://github.com/THU-MIG/RepViTRepViT funktioniert gut in der mobilen ViT-Architektur und zeigt erhebliche Vorteile. Als nächstes untersuchen wir die Beiträge dieser Studie. In dem Artikel wird erwähnt, dass Lightweight-ViTs bei visuellen Aufgaben im Allgemeinen eine bessere Leistung erbringen als Lightweight-CNNs, hauptsächlich aufgrund ihres Multi-Head-Selbstaufmerksamkeitsmoduls (MSHA), das es dem Modell ermöglicht, globale Darstellungen zu lernen. Allerdings wurden die architektonischen Unterschiede zwischen Lightweight-ViTs und Lightweight-CNNs noch nicht vollständig untersucht. In dieser Studie integrierten die Autoren leichte ViTs in die effektiven

Wie steil ist die Lernkurve der Golang-Framework-Architektur? Wie steil ist die Lernkurve der Golang-Framework-Architektur? Jun 05, 2024 pm 06:59 PM

Die Lernkurve der Go-Framework-Architektur hängt von der Vertrautheit mit der Go-Sprache und der Backend-Entwicklung sowie der Komplexität des gewählten Frameworks ab: einem guten Verständnis der Grundlagen der Go-Sprache. Es ist hilfreich, Erfahrung in der Backend-Entwicklung zu haben. Frameworks mit unterschiedlicher Komplexität führen zu unterschiedlichen Lernkurven.

Ist PHP Front-End oder Back-End in der Webentwicklung? Ist PHP Front-End oder Back-End in der Webentwicklung? Mar 24, 2024 pm 02:18 PM

PHP gehört zum Backend in der Webentwicklung. PHP ist eine serverseitige Skriptsprache, die hauptsächlich zur Verarbeitung serverseitiger Logik und zur Generierung dynamischer Webinhalte verwendet wird. Im Vergleich zur Front-End-Technologie wird PHP eher für Back-End-Vorgänge wie die Interaktion mit Datenbanken, die Verarbeitung von Benutzeranfragen und die Generierung von Seiteninhalten verwendet. Anschließend wird anhand konkreter Codebeispiele die Anwendung von PHP in der Backend-Entwicklung veranschaulicht. Schauen wir uns zunächst ein einfaches PHP-Codebeispiel zum Herstellen einer Verbindung zu einer Datenbank und zum Abfragen von Daten an:

VSCode verstehen: Wofür wird dieses Tool verwendet? VSCode verstehen: Wofür wird dieses Tool verwendet? Mar 25, 2024 pm 03:06 PM

„VSCode verstehen: Wofür wird dieses Tool verwendet?“ „Als Programmierer, egal ob Sie Anfänger oder erfahrener Entwickler sind, können Sie auf den Einsatz von Codebearbeitungstools nicht verzichten.“ Unter vielen Bearbeitungstools ist Visual Studio Code (kurz VSCode) bei Entwicklern als Open-Source-, leichter und leistungsstarker Code-Editor sehr beliebt. Wofür genau wird VSCode verwendet? Dieser Artikel befasst sich mit den Funktionen und Verwendungsmöglichkeiten von VSCode und stellt spezifische Codebeispiele bereit, um den Lesern zu helfen

See all articles