欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

怎么編寫C++程序并把它做成ipk包

這篇文章主要講解了“怎么編寫C++程序并把它做成ipk包”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“怎么編寫C++程序并把它做成ipk包”吧!

創(chuàng)新互聯(lián)公司是專業(yè)的新密網(wǎng)站建設(shè)公司,新密接單;提供成都做網(wǎng)站、成都網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行新密網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

各文件內(nèi)容

在 SDK/package/ 路徑下創(chuàng)建 cpp-demo 目錄,并生成一個(gè)非常簡(jiǎn)單的 cpp 程序

$ cd SDK
$ mkdir -p package/cpp-demo
$ cd package/cpp-demo
$ touch Makefile
$ mkdir src
$ cd src
$ touch Makefile main.cpp

形成如下目錄結(jié)構(gòu):

$ tree package/demo-cpp
package/cpp-demo/
|-- Makefile
`-- src
    |-- main.cpp
    `-- Makefile

package/cpp-demo/src/main.cpp內(nèi)容:

#include <iostream>

using namespace std;

int main(int argc, char **argv)
{
    cout << "This is C++ Demo" << endl;
    return 0;
}

package/cpp-demo/src/Makefile內(nèi)容:

target=cpp-demo

ALL:$(target)

objects=main.o

cpp-demo: $(objects)
    $(CXX) -o $(target) $(objects)

clean:
    @rm -rf $(objects)

注意:上面用的是CXX,而不是CC,就這點(diǎn)區(qū)別。

package/Makefile內(nèi)容:

include $(TOPDIR)/rules.mk

PKG_NAME:=cpp-demo
PKG_RELEASE:=1
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)

include $(INCLUDE_DIR)/package.mk

define Package/cpp-demo
    SECTION:=utils
    CATEGORY:=Utilties
    TITLE:=cpp-demo
endef

define Build/Prepare
    $(MKDIR) -p $(PKG_BUILD_DIR)
    $(CP) ./src/* $(PKG_BUILD_DIR)
endef

define Package/cpp-demo/install
    $(INSTALL_DIR) $(1)/bin
    $(INSTALL_BIN) $(PKG_BUILD_DIR)/cpp-demo $(1)/bin
endef

$(eval $(call BuildPackage,cpp-demo))

解決鏈接錯(cuò)誤

在SDK目錄下 make V=s,結(jié)果報(bào)錯(cuò):

Package cpp-demo is missing dependencies for the following libraries:
libstdc++.so.6

對(duì)錯(cuò)誤的初步認(rèn)識(shí)

說是要依賴 libstdc++.so.6 這個(gè)庫(kù)文件?

那好吧,在本地機(jī)上安裝一個(gè)便是了。

$ sudo yum install libstdc++
...省略...
Package libstdc++-4.4.7-11.el6.i686 already installed and latest version
Nothing to do

說明本地已安排了libstdc++了的。難不成是版本對(duì)不上號(hào)?

我用 locate命令找了一下 libstdc++這個(gè)文件,發(fā)現(xiàn)存在 /usr/lib/libstdc++.so.6 文件。這應(yīng)該就是上面需要的庫(kù)吧。

應(yīng)該在LD_LIBRARY_PATH環(huán)境變量中沒有將 /usr/lib 加入到其中。如下:

$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib make V=s

這次,報(bào):

Package cpp-demo is missing dependencies for the following libraries:
libc.so.6
libm.so.6
libstdc++.so.6

不湊效?!

發(fā)現(xiàn)依賴的是目標(biāo)機(jī)的動(dòng)態(tài)庫(kù)

不過靜下心來(lái)想想,我編譯cpp-demo需要的是開發(fā)機(jī)的動(dòng)態(tài)庫(kù)呢,還是目標(biāo)機(jī)的動(dòng)態(tài)庫(kù)?

動(dòng)態(tài)庫(kù)是程序在運(yùn)行起來(lái)后加載的庫(kù),那么cpp-demo在目標(biāo)機(jī)上運(yùn)行起來(lái)后,加載的動(dòng)態(tài)庫(kù)應(yīng)該是目標(biāo)機(jī)的,不應(yīng)該是開發(fā)機(jī)的。所以,剛剛我在整開發(fā)機(jī)上的動(dòng)態(tài)庫(kù),與這個(gè)應(yīng)該是兩碼事兒。

在SDK路徑下搜所有的動(dòng)態(tài)庫(kù)文件:

$ find -name lib*.so.*
./staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/lib/libzmq.so.4
./staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/lib/libevent_openssl-2.0.so.5
./staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/lib/libpopt.so.0.0.0
...<略>
./staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/lib/MySQL/libmysqlclient.so.16
./staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/lib/mysql/libmysqlclient_r.so.16.0.0
...<略>
./staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/lib/libc.so.0
./staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/lib/libstdc++.so.6
...<略>
./staging_dir/host/lib/libltdl.so.7
./staging_dir/host/lib/liblzma.so.5

有很多,也看到了 libstdc++.so.6

應(yīng)該是在鏈接時(shí)將 libstdc++.so.6 所在的路徑加進(jìn)來(lái)吧。就像:

g++ -L./staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/lib/ -lstdc++

這樣。

排除編譯錯(cuò)誤

我們檢查編譯調(diào)試信息打印出來(lái)的LDFLAGS的值:

LDFLAGS="-L/home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/lib\
         -L/home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/staging_dir/target-mips_34kc_uClibc-0.9.33.2/lib\
         -L/home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/usr/lib\
         -L/home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/lib "

這說明,libstdc++.so.6已在LDFLAGS的路徑范圍之下,編譯不應(yīng)該出錯(cuò)。

還是好好研究一下錯(cuò)誤提示:

make[4]: Entering directory `/home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/build_dir/target-mips_34kc_uClibc-0.9.33.2/cpp-demo'
make[4]: Nothing to be done for `ALL'.
make[4]: Leaving directory `/home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/build_dir/target-mips_34kc_uClibc-0.9.33.2/cpp-demo'
touch /home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/build_dir/target-mips_34kc_uClibc-0.9.33.2/cpp-demo/.built
mkdir -p /home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/bin/ar71xx/packages /home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/build_dir/target-mips_34kc_uClibc-0.9.33.2/cpp-demo/ipkg-ar71xx/cpp-demo/CONTROL /home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/staging_dir/target-mips_34kc_uClibc-0.9.33.2/pkginfo
install -d -m0755 /home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/build_dir/target-mips_34kc_uClibc-0.9.33.2/cpp-demo/ipkg-ar71xx/cpp-demo/bin
install -m0755 /home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/build_dir/target-mips_34kc_uClibc-0.9.33.2/cpp-demo/cpp-demo /home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/build_dir/target-mips_34kc_uClibc-0.9.33.2/cpp-demo/ipkg-ar71xx/cpp-demo/bin
find /home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/build_dir/target-mips_34kc_uClibc-0.9.33.2/cpp-demo/ipkg-ar71xx/cpp-demo -name 'CVS' -o -name '.svn' -o -name '.#*' -o -name '*~'| xargs -r rm -rf
Package cpp-demo is missing dependencies for the following libraries:
libc.so.6
libm.so.6
libstdc++.so.6
make[3]: *** [/home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/bin/ar71xx/packages/base/cpp-demo_1_ar71xx.ipk] Error 1

從前3行看來(lái),cpp-demo的編譯好像是正常通過了的。

查看 build_dir/target-mips

tree build_dir/target-mips_34kc_uClibc-0.9.33.2/cpp-demo/
build_dir/target-mips_34kc_uClibc-0.9.33.2/cpp-demo/
|-- cpp-demo
|-- ipkg-ar71xx
|   `-- cpp-demo
|       |-- bin
|       |   `-- cpp-demo
|       `-- CONTROL
|-- main.cpp
|-- main.o
`-- Makefile

4 directories, 5 files

在這個(gè)路徑下已經(jīng)成功生成了cpp-demo可執(zhí)行程序。證明,編譯是通過了的。

為什么 find 執(zhí)行完就報(bào)錯(cuò)?

深入研究錯(cuò)誤根源

怎么入手?從錯(cuò)誤提示入手吧,看看是在哪里提示"Package cpp-demo is missing dependencies for the following libraries"的。

在SDK目錄下執(zhí)行 grep 命令進(jìn)行查找。

$ grep "is missing dependencies for the following libraries" ./* -R
./include/package-ipkg.mk:            echo "Package $(1) is missing dependencies for the following libraries:" >&2; \
package-ipkg.mk

打開 include/package-ipkg.mk 文件看個(gè)究竟。

怎么編寫C++程序并把它做成ipk包

在74行輸入錯(cuò)誤提示信息,條件是存在文件 $(PKG_INFO_DIR)/$(1).missing 這個(gè)文件。那問題來(lái)了,這個(gè)文件是怎么產(chǎn)生的呢?

行70~71行的意思是:如果在 $(PKG_INFO_DIR)/$(1).provides 中沒有找到$FILE的,就把$FILE寫入到 $(PKG_INFO_DIR)/$(1).missing
其中 $(1)值為cpp-demo,相應(yīng)的 cpp-demo.provides 與 cpp-demo.missing 都是在 SDK/staging_dir/target-mips_34kc_uClibc-0.9.33.2/pkginfo/ 路徑下的。

那么 xxx.provides 文件里的內(nèi)容代碼什么呢?

63~68行為一個(gè)執(zhí)行進(jìn)程,它用管道與while語(yǔ)句連接起來(lái)。也就是說while里面的FILE變量就是63~68行標(biāo)準(zhǔn)輸出的結(jié)果。
65,66,67是在根據(jù)平臺(tái)設(shè)置環(huán)境變量的值,然后在68行執(zhí)行 SDK/scripts/gen-dependencies.sh。

我猜gen-dependencise.sh執(zhí)行輸出的一定是cpp-demo所依賴的庫(kù)名稱。

研究gen-dependencise.sh

我們打開 SDK/scripts/gen-dependencise.sh 文件,其中最核心的一段:

#!/usr/bin/env bash

TARGETS=$*
XARGS="${XARGS:-xargs -r}"

find $TARGETS -type f -a -exec file {} \; | \
  sed -n -e 's/^\(.*\):.*ELF.*\(executable\|shared object\).*,.* stripped/\1/p' | \
  $XARGS -n1 $READELF -d | \
  awk '$2 ~ /NEEDED/ && $NF !~ /interpreter/ && $NF ~ /^\[?lib.*\.so/ { gsub(/[\[\]]/, "", $NF); print $NF }' | \
  sort -u

從TARGETS目錄下查看到所有的文件。對(duì)每個(gè)文件并用file命令輸入該文件的基本信息。用sed對(duì)file的輸出進(jìn)行分析,找出有"ELF"且有"executable"或"shared object"關(guān)鍵字的文件。
再對(duì)這個(gè)文件用 readelf -d 命令輸入ELF文件的信息,再用awk從中提取出所依賴的 *.so 文件名,并打印到標(biāo)準(zhǔn)輸出。

我親手用readelf查看一下cpp-demo依賴什么:

$ readelf -d build_dir/target-mips_34kc_uClibc-0.9.33.2/cpp-demo/cpp-demo 

Dynamic section at offset 0x934 contains 23 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libstdc++.so.6]
 0x00000001 (NEEDED)                     Shared library: [libm.so.6]
 0x00000001 (NEEDED)                     Shared library: [libgcc_s.so.1]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
 0x0000000c (INIT)                       0x80484e8
...<省略>

它確實(shí)依賴 libstdc++.so.6, libm.so.6, libc.so.6 這3個(gè)動(dòng)態(tài)庫(kù)文件。

現(xiàn)在 package-ipk.mk 文件中過程理清楚了。cpp-demo所依賴的庫(kù)文件,在cpp-demo.provides 文件中找不到就會(huì)寫入到 cpp-demo.missing。

如果純粹是想讓它打包成功的話,那就把差的文件寫入到cpp-demo.provides文件就了事兒了。

這樣做會(huì)不會(huì)有后有后遺癥?

試試再說~,結(jié)果還是不成功。原因是cpp-demo.provides是自動(dòng)生成的。就算是我手動(dòng)改了它,下次make的時(shí)候還是會(huì)還原的。

那新問題是:Who在生成這個(gè)cpp-demo.provides文件?它是根據(jù)什么生成這個(gè)文件的?

那就grep一下關(guān)鍵字"$(1).provides",應(yīng)該就可以找到。結(jié)果還是在 package-ipk.mk 文件里:

怎么編寫C++程序并把它做成ipk包

L185,將數(shù)據(jù)進(jìn)行排序了之后寫入到 cpp-demo.provides。數(shù)據(jù)由L179~184產(chǎn)生。

L179,將IDIR_$(1)目錄下的所有 lib*.so*, *.ko 文件名打印出來(lái),作為已有的庫(kù)文件,由L185寫入cpp-demo.provides文件。

IDIR_$(1)的定義如下:

怎么編寫C++程序并把它做成ipk包

L180~184這個(gè)for循環(huán)不太好理解。

怎么編寫C++程序并把它做成ipk包

其中patsubst,是個(gè)字串替換命令,其詳細(xì)用法見:[makefile中的patsubst]

$(patsubst %,$(PKG_INFO_DIR)/%.provides,$(IDEPEND_$(1))) 返回的結(jié)果是:將$(IDEPEND_$(1))中的每個(gè)結(jié)果 item,變成:$(PKG_INFO_DIR)/$(item).provides返回。

那IDEPEND_$(1)是什么?

怎么編寫C++程序并把它做成ipk包

怎么編寫C++程序并把它做成ipk包

博主深深地感到腦容量不夠了。有哪位高人知道的,請(qǐng)指點(diǎn)一下。

跳出這個(gè)洞,回到L180~184,的問題。它就是把其它的某個(gè)相關(guān)的 xxxx.provides 文件里的內(nèi)容輸出來(lái)。

博主通過經(jīng)驗(yàn)推斷,xxxx.provides 代表的是是與cpp-demo依賴的組件所依賴的庫(kù)。

解決方案一:在 Makefile 中添加 Package/cpp-demo/extra_provides 宏

注意:L184,是 $(Package/$(1)/extra_provides)。也就是說,我們可以在 package/cpp-demo/Makefile 文件中定義 Package/cpp-demo/extra_provides 宏來(lái)強(qiáng)制性地將那幾個(gè)庫(kù)加進(jìn)去。比如:

define Package/cpp-demo/extra_provides
    echo "libstdc++.so.6"
    echo "libc.so.6"
    echo "libm.so.6"
endef

經(jīng)過試驗(yàn),正確的寫法如下:

define Package/cpp-demo/extra_provides
    echo 'libstdc++.so.6'; \
    echo 'libm.so.6'; \
    echo 'libc.so.6';
endef

這樣寫果然湊效,再 make V=s,能夠打包成功。

但是,有點(diǎn)我們必須明確的是:在打包中生成的ipk文件里,是沒有l(wèi)ibstdc++, libc, libm這3個(gè)庫(kù)的。如果所安裝的OpenWrt系統(tǒng)里也沒有這3個(gè)庫(kù),那么我們安裝的應(yīng)用程序是不能正常使用的。
相當(dāng)于是在騙ipk工具,我們已具備了上面這3個(gè)庫(kù)文件。

比較穩(wěn)妥的方法是采用方案二,如下:

解決方案二:在 Makefile 中的 Package/cpp-demo/install 宏中準(zhǔn)備所需的庫(kù)文件

還有另一個(gè)方法,注意L176,$(call Package/$(1)/install, $$(IDIR_$(1))),這個(gè)就是引用了我們?cè)贛akefile里寫的 Package/cpp-demo/install 宏么?
我們可以在這個(gè)宏里,將它需要的幾個(gè)庫(kù)文件復(fù)制到 $(1) 對(duì)應(yīng)的目錄下。

如下修改:

define Package/cpp-demo/install
    $(INSTALL_DIR) $(1)/bin
    $(INSTALL_BIN) $(PKG_BUILD_DIR)/cpp-demo $(1)/bin

    $(INSTALL_DIR) $(1)/usr/lib
    $(INSTALL_DATA) $(TOOLCHAIN_DIR)/lib/libstdc++.so.6 $(1)/usr/lib
    $(INSTALL_DATA) $(TOOLCHAIN_DIR)/lib/libm.so $(1)/usr/lib/libm.so.6
    $(INSTALL_DATA) $(TOOLCHAIN_DIR)/lib/libc.so $(1)/usr/lib/libc.so.6
endef

其中,INSTALL_DATA 與 TOOLCHAIN_DIR 這兩個(gè)變量在 rules.mk 文件中定義。
之所以選用 TOOLCHAIN_DIR,是因?yàn)閘ibstdc++.so.6這個(gè)文件就在這個(gè)變量所對(duì)應(yīng)的路徑下。不信,你可以用 find 命令查找一下。

好了,這樣再make V=s,就能正常打包了。

解決方案三:在 Makefile 文件的 Package/cpp-demo 宏中加 DEPENDS 描述

這個(gè)方法不是我想到的,是[GunNRose]給我建議。修改 Makefile:

define Package/cpp-demo
    ...<略>
    DEPENDS:+=libstdcpp
endef

經(jīng)博主親自嘗試,是OK的。

不過,為什么是叫l(wèi)ibstdcpp而不是libstdc++呢?這個(gè)有待研究一下。

官方Dependence文檔:http://wiki.openwrt.org/doc/devel/dependencies

試用

將生成的 SDK/bin/ar71xx/packages/base/cpp-demo_1_ar71xx.ipk 文件用 scp 傳到目標(biāo)機(jī)上進(jìn)行安裝試用。

$ scp bin/ar71xx/packages/base/cpp-demo_1_ar71xx.ipk root@192.168.1.2:
root@192.168.1.2's password: 
cpp-demo_1_ar71xx.ipk                    100%  278KB 278.0KB/s   00:01
$

然后用 SSH 登陸到目標(biāo)機(jī)上去安裝。

root@OpenWrt:~# opkg install cpp-demo_1_ar71xx.ipk 
Installing cpp-demo (1) to root...
Configuring cpp-demo.

試執(zhí)行一下 cpp-demo

root@OpenWrt:~# cpp-demo 
/bin/cpp-demo: line 3: syntax error: unexpected word (expecting ")")

Oops~  運(yùn)行不起來(lái)。

解決運(yùn)行不起來(lái)的問題

檢查一下那3個(gè)依賴的庫(kù)文件,都還在。那為什么不能運(yùn)行起來(lái)呢?

之前博主在排查上面庫(kù)依賴的問題的時(shí)候已看出了端倪。

在 SDK/build_dir/target-mips_34kc_uClibc-0.9.33.2/cpp-demo/ipkg-ar71xx/cpp-demo/ 路徑下的所有內(nèi)容都是直接打包的文件。而這里面的 bin/cpp-demo 可執(zhí)行文件在開發(fā)機(jī)上居然都正常運(yùn)行。

這明顯不對(duì),bin/cpp-demo 應(yīng)該是運(yùn)行在目標(biāo)機(jī)上的ELF文件,怎么可以在開發(fā)機(jī)上運(yùn)行?開發(fā)機(jī)與目標(biāo)機(jī)都不是同類型的CPU。一定是這里出了問題!

博主在想,是不是在交叉編譯的時(shí)候,選用了本機(jī)的gcc,而非目標(biāo)機(jī)的gcc。如下為 SDK/package/cpp-demo/src/Makefile :

target=cpp-demo

ALL:$(target)

objects=main.o

cpp-demo: $(objects)
    echo "CXX = $(CXX)"
    $(CXX) -o $(target) $(objects)

clean:
    @rm -rf $(objects)

為了知道CXX到底是哪一個(gè)編譯器。我特地加了 echo "CXX = $(CXX)">

把 SDK/build_dir 刪了重新 make。為了方便分析,

$ rm -rf build_dir
$ make V=s | less

分析打印的信息:

CC="mips-openwrt-linux-uclibc-gcc" GCC="mips-openwrt-linux-uclibc-gcc" CXX="mips-openwrt-linux-uclibc-g++"
...
make[4]: Entering directory `/home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/build_dir/target-mips_34kc_uClibc-0.9.33.2/cpp-demo'
make[4]: Nothing to be done for `ALL'.
make[4]: Leaving directory `/home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/build_dir/target-mips_34kc_uClibc-0.9.33.2/cpp-demo'
...

咦?Nothing to be done for 'ALL',表示沒有什么需要再編譯的了。

我趕緊查看

[SDK]$ ls build_dir/target-mips_34kc_uClibc-0.9.33.2/cpp-demo/
cpp-demo  ipkg-ar71xx  main.cpp  main.o  Makefile

發(fā)現(xiàn)cpp-demo已經(jīng)生成,而且在開發(fā)機(jī)上可運(yùn)行。這個(gè)cpp-demo是怎么來(lái)的?難不出是從 package/cpp-demo/src里來(lái)的?

我突然想到,我之前進(jìn)入 package/cpp-demo/src/ 路徑下,執(zhí)行過一次 make,那時(shí)一定生成了一個(gè) cpp-demo 可執(zhí)行程序。查看之:

[SDK]$ ls package/cpp-demo/src/
cpp-demo  main.cpp  main.o  Makefile

果然有它!在make時(shí),由于它的存在,編譯組件就認(rèn)為已經(jīng)有了就不必再編譯,所以才導(dǎo)致了上述的問題。

刪除cpp-demo以及main.o?;氐絊DK,重新make

$ rm -rf build_dir
$ make V=s | less

分析打印的信息:

CC="mips-openwrt-linux-uclibc-gcc" GCC="mips-openwrt-linux-uclibc-gcc" CXX="mips-openwrt-linux-uclibc-g++"
...
make[4]: Entering directory `/home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/build_dir/target-mips_34kc_uClibc-0.9.33.2/cpp-demo'
mips-openwrt-linux-uclibc-g++ -Os -pipe -mno-branch-likely -mips32r2 -mtune=34kc -fno-caller-saves -fhonour-copts -Wno-error=unused-but-set-variable \
  -msoft-float -mips16 -minterlink-mips16  -I/home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/include \
  -I/home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/staging_dir/target-mips_34kc_uClibc-0.9.33.2/include \
  -I/home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/usr/include \
  -I/home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/include \
  -c -o main.o main.cpp
echo "DEBUG: CXX = mips-openwrt-linux-uclibc-g++"
DEBUG: CXX = mips-openwrt-linux-uclibc-g++
mips-openwrt-linux-uclibc-g++ -o cpp-demo main.o
make[4]: Leaving directory `/home/hevake_lcj/Workspace/OpenWRT/OpenWrt-SDK/build_dir/target-mips_34kc_uClibc-0.9.33.2/cpp-demo'
...

根據(jù)調(diào)試信息可以知道cpp-demo是用mips-openwrt-linux-uclibs-g++來(lái)編譯的。這下應(yīng)該就對(duì)了!

再次嘗試將ipk文件傳到目標(biāo)機(jī)上并安裝。運(yùn)行效果如下:

root@OpenWrt:~# cpp-demo 
This is C++ Demo

成功了!

感謝各位的閱讀,以上就是“怎么編寫C++程序并把它做成ipk包”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)怎么編寫C++程序并把它做成ipk包這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

當(dāng)前名稱:怎么編寫C++程序并把它做成ipk包
本文URL:http://chinadenli.net/article6/jgghog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、定制網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、軟件開發(fā)小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
这里只有九九热精品视频| 欧美一级内射一色桃子| 国产一级片内射视频免费播放 | 日韩美女偷拍视频久久| 精品欧美在线观看国产| 大尺度剧情国产在线视频| 日本高清视频在线播放| 国产精品熟女在线视频| 久久热在线免费视频精品| 久久精品a毛片看国产成人| 九九热最新视频免费观看| 欧美三级大黄片免费看| 亚洲中文字幕三区四区| 黑丝国产精品一区二区| 邻居人妻人公侵犯人妻视频| 国产免费操美女逼视频| 亚洲国产av精品一区二区| 国产又粗又猛又大爽又黄同志| 高清一区二区三区大伊香蕉| 激情综合网俺也狠狠地| 内射精子视频欧美一区二区| 亚洲性生活一区二区三区| 国产在线一区中文字幕| 好吊妞视频免费在线观看| 亚洲一区二区三区中文久久| 欧美日韩少妇精品专区性色| 免费在线观看欧美喷水黄片| 国产成人午夜av一区二区| 午夜福利在线观看免费| 国产又猛又黄又粗又爽无遮挡| 人妻少妇久久中文字幕久久| 精品一区二区三区中文字幕| 午夜亚洲精品理论片在线观看| 国产成人午夜在线视频| 国产在线一区二区三区不卡| 国产精品刮毛视频不卡| 人妻露脸一区二区三区| 午夜亚洲精品理论片在线观看| 精品综合欧美一区二区三区| 午夜福利国产精品不卡| 厕所偷拍一区二区三区视频|