meego源碼編譯
⑴ 誰能說說塞班、安卓還有meego的優缺點
概念:
塞班系統是諾基亞公司開發出來的。
安卓系統版權歸谷歌公司所有。
meego是諾基亞和英特爾合作的。
優缺點:
塞班系統
不開放源代碼,只提供幾個平台供軟體製造商使用,並且塞班系統編程復雜。所以沒有太多的軟體公司為塞班系統設計軟體。
安卓系統:開源系統,能讓軟體製造商隨意設計出各種軟體,所以與塞班相比,安卓系統的軟體更加簡潔,功能更強大。
meego是新系統,不太了解。如果樓主不是發燒級別的建議等這個系統成熟後再考慮是否買這種系統的手機。
----
至於哪些廠商會用安卓系統,這個說不準,現在為止有樓主提到的摩托羅拉的里程碑是安卓系統的亮點,還有聯想的樂pine手機也是安卓系統,並且市場上反應都不錯,除了這兩個廠商用安卓最多的應該是HTC。
我本人雖然正在用諾基亞5230,但個人覺得安卓系統是現在和以後的主流系統。
⑵ 如何在MeeGo Qt應用程序中載入插件
一、創建一個基於QWidget的窗體程序
1
演示示例創建的是一個基於QWidget類的窗體程序,當然你要使用其他窗體類也是可以的。
項目名稱為EchoWindow,窗體類名採用的是默認的widget。項目位於明為MyPlugin的目錄下。
整個的目錄結構如下:
2
具體程序界面如下。點擊發送後,將文本框的內容經過插件的簡單處理後在黑色框線的標簽控制項中顯示出來。
END
二、建立介面類
1
首先了解下什麼是介面。
介面類就是,由純虛函數構成的類。它是不能夠被實例化的。
在Assistant中有簡短的說明。如果類中沒有虛函數會被編譯器報錯的。
2
下面我們來建立介面類。
在EchoWindow項目上右鍵,添加新文件。
3
在彈出的 新建文件 對話框中,我們選擇C++,中間窗口選擇 C++ Header File。然後點擊choose。
4
輸入名稱 EchoInterface。當然,也可以是任何你喜歡的名字。點擊下一步,然後點擊完成。
5
我們來看看,EchoWindow項目的目錄情況。
6
在EchoInterface.h中輸入以下內容:
#ifndef ECHOINTERFACE
#define ECHOINTERFACE#include <QString>class EchoInterface{
public:
virtual ~EchoInterface() {}
virtual QString echo(const QString &message) = 0;
};
#define EchoInterface_iid "Examples.Plugin.EchoInterface"
Q_DECLARE_INTERFACE(EchoInterface, EchoInterface_iid)
#endif // ECHOINTERFACE
7
可以看到類中只有一個純虛函數。
Q_DECLARE_INTERFACE宏是為了讓Qt的元對象系統知道這是一個介面。
同時還要注意那個iid,我們的是 "Examples.Plugin.EchoInterface",待會會用到。
好的,到此,我們的介面類編寫完畢。
END
三、創建插件項目
1
點擊文件菜單,新建文件或項目。
2
在彈出的 New File or Project 窗口中,我們選擇,其他項目,Empty qmake project,然後choose。
3
在彈出的Empty qmake project窗口中,名稱我們輸入Plugin,路徑我們按照第一步第一個圖來存放,也就是與EchoWindow在同級目錄下即可。然後,一直下一步,直到完成。
4
我們再來看看當前的整個項目結構。Plugin確實是個空項目,什麼都沒有。
5
我們在Plugin項目上右鍵,選擇添加新文件,這個與添加那個介面類是一樣的。在彈出的 新建文件 窗口中,我們選擇C++,中間選擇C++ class。然後點擊Choose。
6
在彈出的C++ class窗口中,我們按圖中輸入。然後下一步。再點擊完成。
7
首先來編輯下plugin.pro文件。輸入如下內容:
TEMPLATE = lib
CONFIG += plugin
QT += widgets
INCLUDEPATH += ../echowindow
HEADERS = echoplugin.h
SOURCES = echoplugin.cpp
TARGET = $$qtLibraryTarget(echoplugin)
DESTDIR = ../plugins
然後保存。
第一行:生成的是一個庫文件。
第二行:這是一個插件
第四行:因為我們要用到剛才定義的介面類,而該類的位置在echowindow中。
第七行:生成的庫的名稱,後綴名qt會根據系統自動添加。
第八行:生成文件的存放位置。
8
在echoplugin.h中輸入:
#include <QObject>
#include <QtPlugin>
#include "echointerface.h"
class EchoPlugin : public QObject, EchoInterface
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "Examples.Plugin.EchoInterface")
Q_INTERFACES(EchoInterface)
public:
EchoPlugin();
QString echo(const QString &message) Q_DECL_OVERRIDE;
};
Q_INTERFACES告訴Qt類實現的是哪個介面,它的參數可以有多個。
Q_PLUGIN_METADATA包含了我們剛才定義的IID。
同時可以看到,我們的EchoPlugin繼承自QObject和EchoInterface。並且下面也有一個echo函數,這是我們要具體實現的純虛函數。
9
現在來實現echoplugin.cpp文件。很簡單:
#include "echoplugin.h"
#include <QtWidgets>
EchoPlugin::EchoPlugin()
{
}
QString EchoPlugin::echo(const QString &message)
{
return QString("process:")+message;
}
echo函數只是在參數前面加上了process然後直接返回了。
END
四、編寫窗體程序的代碼
1
widget.h的代碼如下:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include "echointerface.h"
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_pushButton_send_clicked();
private:
Ui::Widget *ui;
EchoInterface *echoInterface;
bool loadPlugin();
};
#endif // WIDGET_H
我們定義了一個介面類的指針。以及一個loadPlugin函數。
2
widget.cpp代碼:
#include "widget.h"
#include "ui_widget.h"
#include <QDir>
#include <QMessageBox>
#include <QtWidgets>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
if (!loadPlugin())
{
QMessageBox::information(this, "Error", "Could not load the plugin");
ui->lineEdit_origin_msg->setEnabled(false);
ui->pushButton_send->setEnabled(false);
}
}
Widget::~Widget()
{
delete ui;
}
bool Widget::loadPlugin()
{
QDir pluginsDir(qApp->applicationDirPath());
pluginsDir.cd("plugins");
foreach (QString fileName, pluginsDir.entryList(QDir::Files))
{
QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(fileName));
QObject *plugin = pluginLoader.instance();
if (plugin)
{
echoInterface = qobject_cast<EchoInterface *>(plugin);
if (echoInterface)
return true;
}
}
return false;
}
void Widget::on_pushButton_send_clicked()
{
QString ans=echoInterface->echo(ui->lineEdit_origin_msg->text());
ui->label_answer->setText(ans);
}
注意我們的載入插件函數,我們在窗口的初始化過程中調用了該函數。該函數找到插件文件後,通過QPluginLoader 對象進行載入,然後調用函數instance實例化類並返回一個QObject對象指針,然後通過一個靜態強制轉換為我們的介面類指針。
然後我們點擊按鈕時,就可以使用該指針調用echo函數處理文本框的字元串,並返回處理後的字元串。之後,在標簽控制項中顯示出來。
END
五、構建項目,運行程序
我們分別在兩個項目上右鍵,選擇 構建 菜單。
構建完畢後,可以看到,我們的插件生成了。我們的窗體程序也生成了。
將生成的插件拷貝到生成的窗體程序的目錄。
可以運行程序了。因為我們生成的是debug程序,所以我們在IDE中運行它。
右鍵將 EchoWindow設置為活躍項目。
然後點擊運行,如果設為活躍後運行按鈕時灰色,你可以先將項目套件設置為release,然後再換回來。
來看看運行的情況。看來我們的插件起作用了。
至於為什麼插件是放在plugins文件夾中,是因為我們在編寫plugin插件時pro文件的設置,更重要的是我們的loadPlugin函數是在可執行文件同級目錄下的plugins文件夾中尋找,這才是根本。當然你可以修改該函數代碼,把插件放在任何你想放置的地方。
好了,整個插件的編寫過程到此結束。
⑶ 基於linux的新操作系統MeeGo,是什麼意思
meego是nokia為智能手機設計的手機操作系統,也可以用於上網本、平板電腦等便攜電腦設備。而meego這個系統的核心其實就是linux的內核,因為linux具有極佳的跨平台移植性能,所以直接用linux核心遠遠要比自己開發更高效、更穩定、更安全、更快捷。所以說meego基於linux一點都沒錯,所謂的「新」其實僅僅是界面比較新而已,而它的核心就是linux的kernel。
⑷ 關於安卓的java虛擬機是什麼概念!!!百度寫的太專業了!!!求解
恩,安卓的性能是在提升,但有上限,再怎麼提升,軟體也是運行在虛擬機上,代碼也要經過位元組碼裝載,進行校驗,才能轉換成機器碼執行(這三個步驟都消耗時間、CPU和內存資源),即使開了JIT,也只是部分編譯成機器碼存起來。並且內存的垃圾回收機制,雖然對開發者來說省了事,但卻維持這種回收機制也要耗資源。當然,也有優點,使用虛擬機,這對於跨平台來說,確實是很有益的。
⑸ 調用了shell腳本的Qt程序如何打包成.deb文件
大致過程:
* 在源碼目錄內創建debian化目錄 (./debian).
* 修改./debian目錄內的文件,如包維護者的詳細信息、包描述,等等;
* 在本機編譯源代碼;
* 在本機生成.deb包;
需要用到的工具:
* dh_make(dh-make包的一部分)——用於自動創建./debian目錄和其他用於創建.deb包的骨架模板文件;
* make(Gnu make)——構建過程中要用到的工具;
* debchange/dch(devscripts包的一部分)——用於編輯包的版本號;
* debuild(devscripts包的一部分)——運行構建過程,包括編譯連接,以及生成deb包;
可以參考
http://wenku..com/view/6f7e3665f5335a8102d22051.html
⑹ meego是什麼系統
meego系統是一個由英特爾和諾基亞兩個巨頭共同開發的系統,目前周遊諾基亞n9採用了這個系統,前景並不是很好,樓主沒有見過的主要原因就是諾基亞n9的保有量實在是太少了,應用是個大問題啊!
MeeGO是英特爾和諾基亞合作推出的一個操作系統,在2010年巴塞羅納舉辦的世界移動大會上首次發布,該項目整合英特爾的Moblin和諾基亞的Maemo兩個系統,可以工作在更廣泛的設備上——手機、電腦、筆記本電腦、上網本、平板電腦、智能電視、PTV機頂盒等。
MeeGo是開放源碼的Linux項目,它把由Intel牽頭的Moblin項目跟Nokia領導的Maemo項目結合到單一的開源實踐中。它包含了性能 優化,可供面向計算和圖形的應用及連接服務的開發的組件,對互聯網標準的支持,基於Qt的易於使用的開發環境,以及面向小型平台及移動設備的規模和性能而 優化的最新的Linux架構。MeeGo目前適用的平台包括上網本、簡易台式機、手持計算和通信設備、車載信息娛樂設備、上網電視、多媒體電話。
⑺ meego是什麼系統
MeeGo是一種基於 Linux 的自由及開放源代碼的便攜設備 操作系統 。它在2010年2月的全球移動通信大會中發布,主要推動者為 諾基亞 與 英特爾 。MeeGo融合了諾基亞的 Maemo 及英特爾的 Moblin 平台,並由 Linux基金會 主導。MeeGo主要定位在移動設備、家電數碼等消費類電子產品市場,可用於 智能手機 、 平板電腦 、 上網本 、 智能電視 和車載系統等平台。2011年9月28日,繼諾基亞宣布放棄開發meego之後,英特爾也正式宣布將MeeGo與LiMo合並成為新的系統: Tizen 。2012年7月,在諾基亞的支持下, Jolla Mobile 公司成立。並基於Meego研發sailfish os,將在華發布新一代Jolla手機。
MeeGo系統採用無按鍵設計,與其他任何操作系統都不同。雖然和Android一樣,是繼續Linux,但是在流暢度方面,卻遠遠超過了Android。此外,它也像諾基亞使用了多年的塞班系統一樣,有著強大的多任務功能。
⑻ linux下的boost庫的安裝方法是什麼
打開synaptic, 找到libboost-all-dev, 安裝即可。
安裝後可以查看boost相關庫,在/usr/lib/目錄下
如:/usr/lib/libboost_date_time.a /usr/lib/libboost_math_tr1f-mt.a /usr/lib/libboost_serialization-mt.so
/usr/lib/libboost_date_time-mt.a /usr/lib/libboost_math_tr1f-mt.so /usr/lib/libboost_serialization.so
/usr/lib/libboost_date_time-mt.so /usr/lib/libboost_math_tr1f.so /usr/lib/libboost_serialization.so.1.42.0
/usr/lib/libboost_date_time.so /usr/lib/libboost_math_tr1f.so.1.42.0 /usr/lib/libboost_signals.a
/usr/lib/libboost_date_time.so.1.42.0 /usr/lib/libboost_math_tr1l.a /usr/lib/libboost_signals-mt.a
/usr/lib/libboost_filesystem.a /usr/lib/libboost_math_tr1l-mt.a /usr/lib/libboost_signals-mt.so
/usr/lib/libboost_filesystem-mt.a /usr/lib/libboost_math_tr1l-mt.so /usr/lib/libboost_signals.so
/usr/lib/libboost_filesystem-mt.so /usr/lib/libboost_math_tr1l.so /usr/lib/libboost_signals.so.1.42.0
/usr/lib/libboost_filesystem.so /usr/lib/libboost_math_tr1l.so.1.42.0 /usr/lib/libboost_system.a
/usr/lib/libboost_filesystem.so.1.42.0 /usr/lib/libboost_math_tr1-mt.a /usr/lib/libboost_system-mt.a
/usr/lib/libboost_graph.a /usr/lib/libboost_math_tr1-mt.so /usr/lib/libboost_system-mt.so
/usr/lib/libboost_graph-mt.a /usr/lib/libboost_math_tr1.so /usr/lib/libboost_system.so
/usr/lib/libboost_graph-mt.so /usr/lib/libboost_math_tr1.so.1.42.0 /usr/lib/libboost_system.so.1.42.0
/usr/lib/libboost_graph.so /usr/lib/libboost_prg_exec_monitor.a /usr/lib/libboost_test_exec_monitor.a
/usr/lib/libboost_graph.so.1.42.0 /usr/lib/libboost_prg_exec_monitor-mt.a /usr/lib/libboost_test_exec_monitor-mt.a
復制代碼頭文件在/usr/include/boost下gnuser@ubuntu:~$ ls /usr/include/boost/
accumulators date_time.hpp io_fwd.hpp pointer_cast.hpp spirit
algorithm detail iostreams pointer_to_other.hpp spirit.hpp
aligned_storage.hpp dynamic_bitset is_placeholder.hpp pool statechart
any.hpp dynamic_bitset_fwd.hpp iterator preprocessor static_assert.hpp
archive dynamic_bitset.hpp iterator_adaptors.hpp preprocessor.hpp strong_typedef.hpp
array.hpp enable_shared_from_this.hpp iterator.hpp program_options swap.hpp
asio exception lambda program_options.hpp system
復制代碼boost庫命名:
比如libboost_regex-vc71-mt-d-1_34.lib,
lib: 庫前綴,除了windows平台,都是這個前綴
boost_regex: boost的regex庫
-mt 多線程支持
-d debug版本
⑼ 為什麼說安卓是開源的系統啊
Andy Rubin創立了兩個手機操作系統公司:Danger和Android。Danger 5億美元賣給微軟,今年成為了Kin,Android4千萬美元賣給Google。 Android是Google於2007年11月05日宣布的基於Linux平台的開源手機操作系統的名稱,該平台由操作系統、中間件、用戶界面和應用軟體組成。它採用軟體堆層(Software Stack,又名軟體疊層)的架構,主要分為三部分。底層以Linux內核工作為基礎,由C語言開發,只提供基本功能;中間層包括函數庫Library和虛擬機Virtual Machine,由C++開發。最上層是各種應用軟體,包括通話程序,簡訊程序等,應用軟體則由各公司自行開發,以Java作為編寫程序的一部分。不存在任何以往阻礙移動產業創新的專有權障礙,號稱是首個為移動終端打造的真正開放和完整的移動軟體。 Google通過與軟、硬體開發商、設備製造商、電信運營商等其他有 關各方結成深層次的合作夥伴關系,希望藉助建立標准化、開放式的行動電話軟體平台,在移動產業內形成一個開放式的生態系統。 Android 作為Google企業戰略的重要組成部分,將進一步推進「隨時隨地為每個人提供信息」這一企業目標的實現。全球為數眾多的行動電話用戶正在使用各種基於 Android 的電話。谷歌的目標是讓(移動通訊)不依賴於設備甚至平台。出於這個目的,Android 將補充,而不會替代谷歌長期以來奉行的移動發展戰略:通過與全球各地的手機製造商和移動運營商結成合作夥伴,開發既有用又有吸引力的移動服務,並推廣這些產品。
MeeGo是諾基亞和英特爾宣布推出一個免費手機操作系統,中文昵稱米狗,該操作系統可在智能手機、筆記本電腦和電視等多種電子設備上運行,並有助於這些設備實現無縫集成。這種基於Linux的平台被稱為MeeGo,融合了諾基亞的Maemo和英特爾的Moblin平台。諾基亞的執行副總裁Kai Oistamo表示,MeeGo適用於多種平台的能力使其顯得與眾不同,因此它不僅僅是一種新的手機操作系統。諾基亞公司近日宣布,除了最近即將上市的N8機型之外,所有其後上市的N系列旗艦手機將不再使用塞班操作系統,將轉為使用基於Linux的MeeGo操作系統。
.該MeeGo項目很高興地宣布:「第一天」的MeeGo手機用戶體驗的項目。 你們中許多人會記得這個「從3月1日,當我們第一次提出的MeeGo核心操作系統的源代碼,並開始向MeeGo 1.0版本的開發」的概念。 如今,手機的基準源代碼是提供給開發社區,此代碼是積極發展MeeGo 1.1,這是在10月推出。該小組已准備MeeGo Gitorious所有的來源和基礎設施進行每周一次的1.1版本的MeeGo發展。 該MeeGo用戶界面小組還忙於創造手機參考用戶經驗,並編寫了MeeGo用戶界面設計原則和互動准則 。 這一里程碑標志著在Moblin和Maemo操作為主要架構和技術的選擇決定合並完成已確定。 今天,我們也開放MeeGo基礎設施建設 。