ubuntu pkg config ubuntu软件安装命令
ubuntu无网络环境下如何安装GCC及头文件
1、配置GCC
刚装好的GCC什么都不能编译,因为没有一些必须的头文件,所以要安装build-essential,安装了这个包会安装上g++,libc6-dev,linux-libc-dev,libstdc++6-4.1-dev等好多必须的软件和头文件。
sudo apt-get install build-essential
安装完成后写一个C语言程序testc.c测试一下。
#include
int main()
{
printf("Hello Ubuntu!\n");
return 0;
}
$ gcc testc.c-o testc
$./testc
显示
Hello Ubuntu!
C语言编译器安装成功;
2安装GTK环境
安装GTK环境只要安装一个gnome-core-devel就可以了,里面集成了很多其他的包。除此之外还要转一些其他的东西,如libglib2.0-doc、libgtk2.0-doc帮助文档,devhelp帮助文档查看,glade-gnome、glade-common、glade-doc图形界面设计等。
sudo apt-get install gnome-core-devel
sudo apt-get install libglib2.0-doc libgtk2.0-doc
sudo apt-get install devhelp
sudo apt-get install glade-gnome glade-common glade-doc
安装完成后我们也同样做个测试程序
#include
void hello(GtkWidget*widget,gpointer data)
{
g_print("Hello Ubuntu!\n");
}
gint delete_event(GtkWidget*widget,GdkEvent*event,gpointer data)
{
g_print("delete event occurred\n");
return(TRUE);
}
void destroy(GtkWidget*widget,gpointer data)
{
gtk_main_quit();
}
int main( int argc, char*argv[])
{
GtkWidget*window;
GtkWidget*button;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_signal_connect(GTK_OBJECT(window),"delete_event",GTK_SIGNAL_FUNC(delete_event),NULL);
gtk_signal_connect(GTK_OBJECT(window),"destroy",GTK_SIGNAL_FUNC(destroy), NULL);
gtk_container_set_border_width(GTK_CONTAINER(window), 10);
button= gtk_button_new_with_label("Hello Ubuntu!");
gtk_signal_connect(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(hello), NULL);
gtk_signal_connect_object(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(gtk_widget_destroy),GTK_OBJECT(window));
gtk_container_add(GTK_CONTAINER(window), button);
gtk_widget_show(button);
gtk_widget_show(window);/*显示一个窗口*/
gtk_main();/*进入主循环*/
return(0);
}
用下面命令编译运行
$ gcc gtkhello.c-o gtktest `pkg-config--cflags--libs gtk+-2.0`
$./gtktest
会显示一个带有一个按钮的窗口,点击按钮以后窗口关闭,命令行显示Hello Ubuntu!
3 QT
QT我安装了
libqt4-core
qt4-designer
qt4-dev-tools
qt4-qtconfig
libqt4-dev
libqt4-gui libqt4-debug
libqt4-sql
这个我还没有怎么用过,在新立得里面搜索QT4,看着差不多的都装上了。
5安装一个IDE
Linux里面有个一个C C++的IDE叫Geany,在菜单“应用程序”->“添加删除程序”,在里面program里找一下就可以了。
ubuntu编译osmocombb完要多久
ubuntu编译GNUARM以及OsmocomBB环境方法如下,时间的话看你代码速度啦
以下所有操作基于Ubuntu Linux下,所以基于Ubuntu、Debian等Linux版本均可使用。
一、以Root权限进行接下来的所有操作:
$ sudo-s
二、安装编译osmocomBB所需的软件包:
$ aptitude install libtool shtool autoconf git-core pkg-config make gcc
三、下载所需要的GnuARM ToolChain
基于x86架构
$ wget 百度网盘
$ tar xf bu-2.15_gcc-3.4.3-c-c++-java_nl-1.12.0_gi-6.1.tar.bz2
$ mv gnuarm-*~/gnuarm
基于64位架构
$ wget 百度网盘
$ tar xf bu-2.16.1_gcc-4.0.2-c-c++_nl-1.14.0_gi-6.4_x86-64.tar.bz2
$ mv gnuarm-*~/gnuarm
这样子就已经完成了关于OsmocomBB的交叉编译环境的搭建,剩下就是最关键的设置环境变量
$ export PATH=~/gnuarm/bin:$PATH
建议是直接编辑~/.bashrc的内容,把上面的这个段话直接加到最后。
四、编译libosmocore:
$ git clone git://git.osmocom.org/libosmocore.git
$ cd libosmocore/
$ autoreconf-i
$./configure
$ make
$ make install
$ cd..
$ ldconfig
ldconfig命令一定不要忘记执行,否则osmocomBB编译后运行时会出现找不到libosmocore.so.4的错误。
五、编译OsmocomBB:
$ git clone git://git.osmocom.org/osmocom-bb.git
$ cd osmocom-bb
$ git checkout--track origin/luca/gsmmap
$ cd src
$ make
基本上已经完成所有的编译操作了!Enjoy你的玩具吧!
使用OsmocomBB
首先我们需要在刷写固件之间完成以下几个手动操作,以便接下来的其他操作。因为摩托罗拉C118的数据连接线是用2.5mm音频接口的,所以连接方面大家要注意的是:
连接线接口的小缺陷
红色框住的地方可能会导致大家在误以为接口已经完全和手机接口衔接了,但在刷机的时候没有任何反应。所以这个部分需要大家自己去削一下的。
连接线与TTL的接法
黑/黄:GND
红:TX
白:RX
以上的接法是针对我们RadioWar淘宝店所出售的CP2102以及FT232rl,而基于淘宝其他的产品可能会在TX和RX部分需要反接,大家要记住。有些朋友会说为什么我们不建议PL2303,那是PL2303只有标准的波特率,所以无法进行任何调制,在真正功能固件上使用会出现很大的问题。所以我们不建议使用PL2303
当我们处理完以上的操作之后,就在osmocomBB套件目录下进行相关固件刷写操作,请记住这个操作过程只是临时性的,固件只是以RAM TO ROM的途径下进行临时刷写,关机后原有的摩托罗拉系统依然会存在的。
cd~/osmocom-bb/src/host/osmocon/
启动osmocon刷写所需要的固件,通常大家都是直接刷写Layer1的固件。
./osmocon-m c123xor-p/dev/ttyUSB0../../target/firmware/board/compal_e88/layer1.compalram.bin
看清楚c123xor是基于C118的,非C118的手机请不要使用这个,并且记住C118的固件目录就是compal_e88,在输入以上命令之前,手机必须连接好连接线以及TTL,并且确保手机必须为关键状态。命令输入完成后,当前命令窗口会出现以下类似信息:
got 1 bytes from modem, data looks like: 2f/
got 1 bytes from modem, data looks like: 00.
got 1 bytes from modem, data looks like: 1b.
got 4 bytes from modem, data looks like: f6 02 00 41...A
got 1 bytes from modem, data looks like: 01.
got 1 bytes from modem, data looks like: 40@
出现以上信息后,直接轻按手机的红色开机键,只需点亮机器而不需要进入手机的系统!!!这样子信息状态会显示类似以下的信息:
Received PROMPT1 from phone, responding with CMD
read_file(../../target/firmware/board/compal_e88/layer1.compalram.bin):file_size=56016,hdr_len=4,dnload_len=56023
got 1 bytes from modem, data looks like: 1b.
got 1 bytes from modem, data looks like: f6.
got 1 bytes from modem, data looks like: 02.
got 1 bytes from modem, data looks like: 00.
got 1 bytes from modem, data looks like: 41 A
got 1 bytes from modem, data looks like: 02.
got 1 bytes from modem, data looks like: 43 C
Received PROMPT2 from phone, starting download handle_write(): 4096 bytes(4096/56023)
handle_write(): 4096 bytes(8192/56023)
handle_write(): 4096 bytes(12288/56023)
handle_write(): 4096 bytes(16384/56023)
handle_write(): 4096 bytes(20480/56023)
handle_write(): 4096 bytes(24576/56023)
handle_write(): 4096 bytes(28672/56023)
handle_write(): 4096 bytes(32768/56023)
handle_write(): 4096 bytes(36864/56023)
handle_write(): 4096 bytes(40960/56023)
handle_write(): 4096 bytes(45056/56023)
handle_write(): 4096 bytes(49152/56023)
handle_write(): 4096 bytes(53248/56023)
handle_write(): 2775 bytes(56023/56023)
handle_write(): finished
got 1 bytes from modem, data looks like: 1b.
got 1 bytes from modem, data looks like: f6.
got 1 bytes from modem, data looks like: 02.
got 1 bytes from modem, data looks like: 00.
got 1 bytes from modem, data looks like: 41 A
got 1 bytes from modem, data looks like: 03.
got 1 bytes from modem, data looks like: 42 B
Received DOWNLOAD ACK from phone, your code is running now!
battery_compal_e88_init: starting up
看到以上的信息就证明你的固件刷写操作已经成功了,下来的操作可以是扫描基站或者其他简单而快速的方法:
扫描基站
~/cell_logger/osmocom-bb/src/host/layer23/src/misc/cell_log-O
扫描某一个基站,例如30
~/cell_logger/osmocom-bb/src/host/layer23/src/misc/ccch_scan-i 127.0.0.1-a 30
将扫描基站的日志保存到本地
dumpcap-i lo-w~/cell_logger/mobilelog/Cell.log
打开WireShark实时读取相关的信息
sudo wireshark-k-i lo-f'port 4729'
将CGO 与 Pkg-Config 和 自定义动态库位置一起使用
解决Go语言中使用C动态库时遇到的问题,需要使用包配置文件(package configuration file)和Pkg-Config程序。通过指定CGO的编译器和链接器参数,以及为操作系统设置环境变量,可以在运行Go-get命令后立即获得运行程序的能力,无需依赖预先安装的依赖或额外脚本。
包配置文件(.pc文件)提供给Pkg-Config程序从这些文件检索编译器和链接器信息。默认情况下,Pkg-Config程序可以从/usr/lib或/usr/local/lib路径中的包配置文件找到信息。
查看例如libcrypto.pc文件,可以了解格式及如何提供所需参数,以实现简洁清晰的配置。
使用Pkg-Config命令获取特定文件的编译器和链接器参数,可以查看头文件和库文件路径,以及其他定义的参数。
了解如何使用Pkg-Config工具后,可以对Go语言中的C动态库项目进行修改,使用包配置文件和新的cgo参数。
项目使用一个包配置文件和新的cgo参数,使得动态库在Mac上编译成为可能。通过终端运行特定命令,可以下载、编译和安装程序,尽管头文件和动态链接库不在默认目录下。
程序可在/bin目录下运行,动态链接库存放于DyLib目录下。在项目中创建了新的pkgconfig文件夹,用于存储包配置文件,这些文件使整个过程成为可能。
在main.go源代码中引入新的包配置文件,修改编译器和链接器参数,使得程序在运行时能够正确查找依赖的动态链接库。
运行程序时,输入字符以测试程序功能,程序成功运行依赖于操作系统找到所需动态链接库。修改代码以使用Pkg-Config程序寻找编译和链接参数,从而指定包配置文件。
注意到在包配置文件中使用$GOPATH设置前缀变量。尽管在首次运行Pkg-Config程序时,使用环境变量$GOPATH导致路径设置,但在第二次运行时,通过覆盖前缀变量值,成功获取了预期返回结果。
在使用Go工具之前设置的环境变量PKG_CONFIG_PATH帮助Pkg-Config程序查找不在默认位置的软件包配置文件。GoingGoKeyboard.pc文件通过此环境变量被找到。
最后,理解操作系统如何找到运行程序所需动态库的关键在于DYLD_LIBRARY_PATH环境变量。通过使用包配置文件,向Pkg-Config程序传递必要的选项,使用CGO的Go程序可以实现部署安装后即可运行的构建。
此外,使用此技术可以将第三方库安装到临时路径下进行测试,方便在不再需要库时进行移除。
在Windows或Ubuntu机器上尝试这些代码或概念时,请阅读关于构建自定义动态库以供实验的文档。