在linux下设计一个c程序,这是我们的作业~~

在linux下设计一个c程序,这是我们的作业~~,第1张

#include<stdioh>

void main()

{

int a[15];

int i,j,t;

printf("input 15 numbers:\n");

for(i=0;i<15;i++)

scanf("%d",&a[i]);

printf("\n");

for(j=0;j<14;j++)

for(i=0;i<14-j;i++)

if(a[i]>a[i+1])

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

printf("the sorted numbers:\n");

for(i=0;i<15;i++)

printf("%d",a[i]);

printf("\n");

}

gcc -o a a1c

makefile文件

obj-m:=ao

#KDIR:=/usr/src/linux-headers-2632-31-generic

KDIR:=/home/wyz/桌面/linux-headers-2632-31-generic

#linux-source-2632

#linux-headers-2632-31-generic

#PWD:=$(shell pwd)

default:

#all:

$(MAKE) -C $(KDIR) M=$(PWD) modules

clean:

rm -rf ko

rm -rf mod

rm -rf cmd

rm -rf o

教材书。UNIX是一个计算机 *** 作系统,一个用来协调、管理和控制计算机硬件和软件资源的控制程序,Linux是一套免费使用和自由传播的类Unix *** 作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的 *** 作系统。《unix/linux程序设计》是一本教材书,为普通高等教育“十一五”国家级规划教材。以主流 *** 作系统UNIX为背景,由浅入深地介绍了UNIX环境下计算机通信程序设计的原理与方法。

1 求一份linux环境下的qt creator教程,最好是包含有关C编程的~~~谢了!

Qt creator是跨平台的,你可以在Windows下编程,编译的时候再拿到linux下重新编译一下就OK了,Qt和C++语言类版似,而且权Qt有自己的帮助文档,多看看多试试,网上QT的视频,看完了跟着做一下,或者你字节上网搜事件队列处理,事件响应,信号和槽,这3样都会了,做啥你都有思路了~

希望对你有所帮助!

2 您好!向您请教一个问题linux下QT界面,程序1如何获取程序2的窗口句柄

linux Qt 下不流行句柄 Qt 下要访问一个窗口用的是指针

程序1 想获取, 程序 2 的窗口句柄属于进程间专通属信

进程间通信有多种方法如果找同一台机器上我推荐用有名管道 但是由于每个进程都有自己的地址空间进程间不能直接访问对方的地址所有说不管你有没有成功获得这个句柄,这个句柄都是不能用的

3 Qt用windows下的工具开发的界面能否放在linux下面使用如果能,这和linux下有什么区别

只调用QT库或是标准库的话,只要重新编译就行,linux下有专用的Qt Creator,用法和WINDOWS类似

4 linux下QT编程,就是写一个可视界面程序,输入局域网内某人IP,就可以和他聊天

这个程序很简单啊 要用到QUdpSocket等类

5 如何用qt在linux中编写并使用动态链接库

先写好实现动态链接库的libmycpp文件和libmyh文件,如下:

// libmycpp

#include"libmyh"

#include<iostream>

using namespace std;

MyLib::MyLib()

{

}

MyLib::~MyLib()

{

}

void MyLib::hello()

{

cout << "hello world~!" << endl;

}

// libmyh文件

#ifndef LIBMY_H

#define LIBMY_H

class MyLib

{

public:

MyLib();

~MyLib();

void hello();

};

#endif /LIBMY_H/

然后写好pro文件,如下:

TEMPLATE = lib

TARGET =DllTest

HEADERS += libmyh

SOURCES += libmycpp

保存关闭,文件名命名为MyDllpro

在Shell里执行qmake MyDllpro,在没有错误的情况下,然后执行make ,可以看到生成了几个后缀名为so的文件,如下图:

6 在linux下用qt编程时,请教怎样在程序中调用另一个程序,例如我写好了个聊天程序,想添加个按钮,

使用QProcess,看下Qt的帮助文档有关QProcess这块的你就懂了。

7 linux qt多长时间能学会

1、C++的基础,qt只是库而已,C++才是基础这个就不说了吧,《C++ Primer》可以了;专

2、linux的基础,可以看《属Linux就该这么学》这本书

3、平时多逛逛官网啊、论坛(qt中文论坛,版主挺牛的)之类的。

其实只要有兴趣,学起来还是蛮快的,不过基础还是要打牢固啊,呵呵。

8 求个linux 下qt实现qq聊天功能的代码

//down51cto/data/615244

9 第一次接触Linux和Qt 最近拿到一个局域网下的即时聊天软件,在Linux下用Qt做的,但是不是很懂。

给权限啊,只要是给了权限就可以执行,当然,必须是执行有效的。好像是+x是执行权限,用ls -l可以查看文件有哪些权限

10 linux下的Qt如何设置主窗口的背景,用手写代码的那种

Qt4版本以上可在构造函数中加入如下代码

RcMainWindow::RcMainWindow(QWidget parent) :

QMainWindow(parent),

ui(new Ui::RcMainWindow)

{

ui->setupUi(this);

QPixmap pixmap(":/img/backgroundbmp");

QPalette palette;

palettesetBrush(backgroundRole(), QBrush(pixmap));

setPalette(palette);

}

此外也可实现继承自父类QMainWindow的虚函数paintEvent,并在该函数中加入同样代码。

关于这个方向,我认为大概分3个阶段:

1、嵌入式linux上层应用,包括QT的GUI开发

2、嵌入式linux系统开发

3、嵌入式linux驱动开发

嵌入式目前主要面向的几个 *** 作系统是,LINUX,WINCE、VxWorks等等

Linux是开源免费的,而且其源代码是开放的,更加适合我们学习嵌入式。

所以你可以尝试以下路线:

(1)C语言是所有编程语言中的强者,单片机、DSP、类似ARM的种种芯片的编程都可以用C语言搞定),因此必须非常熟练的掌握。

推荐书籍:《TheCProgrammingLanguage》这本经典的教材是老外写的,也有中译版本。

(2) *** 作系统原理,是必需的,如果你是计算机专业毕业那也就无所谓了,如果是非计算机专业的就必须找一本比较浅显的计算机原理书籍看一看,把啥叫“进程”“线程”“系统调度”等等基本问题搞清楚。

(3)Linux *** 作系统就是用C语言编写的,所以你也应该先学习下Linux方面的编程,只有你会应用了,才能近一步去了解其内核的精髓。

推荐书籍:《UNIX环境高级编程》(第2版)

(4)了解ARM的架构,原理,以及其汇编指令,我们在嵌入式开发中,一般很少去写汇编,但是最起码的要求是能够看懂arm汇编。

(5)系统移植的时候,就需要你从最下层的bootloader开始,然后内核移植,文件系统移植等。而移植这部分对硬件的依赖是非常大的,其配置步骤也相对复杂,也没有太多详细资料。

(6)驱动开发

linux驱动程序设计既是个极富有挑战性的领域,又是一个博大精深的内容。

linux驱动程序设计本质是属于linux内核编程范畴的,因而是对linux内核和内核编程是有要求的。在学习前你要想了解linux内核的组成,因为每一部分要详细研究的话足够可以扩展成一本厚书。

以上只不过是大概的框架,在实际的开发中还会涉及很多东西,比如:交叉编译、makefile、shell脚本等等,所以说学习嵌入式的周期较长,门槛较高,自学的话更是需要较强的学习能力和专业功底。只要能坚持下来一定会取得成功!

嵌入式非常难,看书的话比较晦涩难懂,不容易入门,我个人比较偏向于看视频教程,因为有老师带着比较容易入门。给看看一篇文章是关于一位专科生怎么自学嵌入式的。

做个自我介绍,我07年考上一所很烂专科民办的学校,学的是生物专业,具体的学校名称我就不说出来献丑了。09年我就辍学了,我在那样的学校,一年学费要1万多,但是根本没有人学习,我实在看不到希望,我就退学了。

退学后我也迷茫,大专都没有毕业,我真的不知道我能干什么,我在纠结着我能做什么。所以辍学后我一段时间,我想去找工作,因为我比较沉默寡言,不是很会说话,我不适合去应聘做业务。我想应聘做技术的,可是处处碰壁。

一次偶然的机会,我才听到嵌入式这个行业。那天我去新华书店,在计算机分类那边想找本书学习。后来有个女孩子走过来,问我是不是读计算机的,有没有兴趣学习嵌入式,然后给我介绍了一下嵌入式现在的火热情况,告诉我学嵌入式多么的有前景,给我了一份传单,嵌入式培训的广告。听了她的介绍,我心里痒痒的,确实我很想去学会一门自己的技术,靠自己的双手吃饭。

回家后,我就上网查了下嵌入式,确实是当今比较热门的行业,也是比较好找工作的,工资也是相对比较高。我就下决心想学嵌入式了。于是我去找嵌入式培训的相关信息,说真的,我也很迷茫,我不知道培训是否真的能像他们宣传的那样好,所以我就想了解一段时间再做打算。

后来,我在百度知道看到一篇让我很鼓舞的文章,是一个嵌入式高手介绍没有基础的朋友怎么自学入门学嵌入式,文章写的很好,包含了如何学习,该怎么学习。他提到一个方法就是看视频,因为看书实在太枯燥和费解的,很多我们也看不懂。这点我真的很认同,我自己看书往往看不了几页。

我在想,为什么别人都能自学成才,我也可以的!我要相信自己,所以我就想自学,如果实在学不会我再去培训。

主意一定,我就去搜索嵌入式的视频,虽然零星找到一些嵌入式的视频,但是都不系统,我是想找一个能够告诉我该怎么学的视频,一套从入门到精通的视频,一个比较完整的资料,最好能有老师教,不懂可以请教的。

后来我又找到一份很好的视频,是在IT学习联盟网站推出的一份视频《零基础嵌入式就业班》(喜欢《零基础嵌入式就业班》的可以复制sinalt/qKh粘贴浏览器按回车键即打开)。里面的教程还不错,很完整,可以让我从基础的开始学起。视频比较便宜。

下面介绍下我的学习流程,希望对和我一样完全没有基础的朋友有所帮助。

收到他们寄过来的光盘后,我就开始学习了,由于我没有什么基础,我就从最简单的C语言视频教程学起,话说简单,其实我还是很多不懂的,我只好请教他们,他们还是很热心的,都帮我解决了。C语言我差不多学了一个礼拜,接下来我就学了linux的基本命令,我在他们提供linux虚拟机上都有做练习,敲linux的基本命令,写简单的C语言代码,差不多也就三个礼拜。我每天都在不停的写一些简单的代码,这样一月后我基本掌握了C和linux的基本 *** 作。

接下来我就去学习了人家的视频的培训教程,是整套的,和去参加培训没有多大的区别,这一看就是两个月,学习了ARM的基本原理,学习嵌入式系统的概念,也掌握了嵌入式的环境的一些搭建,对linux也有更深层次的理解了,明白了嵌入式应用到底是怎么做的,但是驱动我只是有一点点的了解,这个相对难一点,我想以后再慢慢啃。

这两个月,除了吃饭睡觉,我几乎都在学习。因为我知道几乎没有基础,比别人差劲,我只能坚持努力着,我不能放弃,我必要要靠自己来养活自己,必须学好这门技术,然后我就把不懂的问题总结记下来,这样慢慢积累了一段时间,我发现自己真的有点入门了。

最后的一个月,我就去看关于实践部分的内容,了解嵌入式项目具体的开发流程,需要什么样的知识,我就开始准备这方面的知识,也就是学习这方面的视频,同时他们建议我去找了找一些嵌入式面试的题目,为自己以后找工作做准备。我就到网上找了很多嵌入式的题目,把他们理解的记下来,这样差不多准备了20天左右

我觉得自己差不多入门了,会做一些简单的东西了。我就想去找工作看看,于是我就到51job疯狂的投简历,因为我学历的问题,专科没有毕业,说真的,大公司没有人会要我,所以我投的都是民营的小公司,我希望自己的努力有所回报。没有想过几天过后,就有面试了,但是第一次面试我失败了,虽然我自认为笔试很好,因为我之前做了准备,但是他们的要求比较严格,需要有一年的项目经验,所以我没有被选中。

后来陆续面试了几家公司,终于功夫不负有心人。我终于面试上的,是在闵行的一家民营的企业,公司规模比较小,我的职务是嵌入式linux应用开发,做安防产品的应用的。我想我也比较幸运,经理很看重我的努力,就决定录用我,开的工资是3500一个月,虽然我知道在上海3500只能过温饱的生活,但是我想我足够了。我至少不用每天都要靠父母养,我自己也能养活自己的。我想只要我继续努力,我工资一定会翻倍的。

把本文写出来,希望能让和我一样的没有基础的朋友有信心,其实我们没有必要自卑,我们不比别人笨,只要我们肯努力,我们一样会成功。

在 Linux 环境下编程是今后你想以计算机技术为资本获得高薪的必由之路。

在当今的人才市场上,高薪聘请的计算机人才主要是两类:一类是大型网站开发的,另一类是嵌入式设备开发的,这两类人的基本技能就是在 unix/Linux 下进行软件开发。

如果你有怀疑就请到大城市的人才交流市场看看,如果你不怀疑就不该怀疑学习 Linux 下程序设计的作用了。

  使用 GTK+ 和 Glade 快速开发 Linux 图形界面

GTK+ 简介

基本概念

GTK+ 是一种用于创建图形界面的库 嗯, gnome 用的就是它, 不过并不是说只

有在 gnome 环境中才能用, 只要系统上装有 GTK 的库 (基本上有图形系统的个

人机都会有的啦) 就能运行基于 GTK 的程序 除了 UNIX-like 平台, 它还移植

到 windows 上, 还有面向嵌入设备的 framebuffer 版本等等

GTK 依赖两个重要的库 一个是 GLib, 这并不是一个图形库, 也和 glibc 不同

, 它大抵上提供了一些接口以屏蔽系统的不同, 比如 gint 在哪里都是 32bit

的, 等等; 另一个是 GDK, 它是一个设备无关的图形库, 支持基本的画点, 以及

与窗口管理器沟通等任务, 由于 GTK 被设计成能在各个平台, 而非仅仅在

XWindow 环境下使用, 所以这个库也是必要的 而在他们上面的 GTK 库, 就提

供了一些 widget --- 可以理解为控件啦, 不过窗口也是一个 widget 的说, 给

我们使用, 并提供了包装良好的事件响应机制

GTK+ 开发基础

要开发基于 GTK 的软件, 必须先安装 GTK+ 的开发包 检查是否正确安装的办

法是在安装后执行 ``pkg-config --cflags --libs gtk+-20'', 如果安装不正

确, 会提示找不到相应的包

GTK 本身是基于 C 的库, 当然也有 C++ 等语言的 wrap, 但它的整个体系是面

向对象的 其最基本的类是 GObject, GtkObject 继承了它, GtkObject 又派生

出我们最经常用到的 GtkWidget, 我们使用的所有窗体控件都派生于它 于是,

在 C 环境中我们就要手动处理这些类转换, GTK 和底层的 GLib 等提供了一种

统一的转换方法, 比如把类型为 GtkWidget 的 button 转换成 GtkButton 形,

写法是: GTK_BUTTON(button), 就酱子

我不打算在这里列一个 GTK 的 hello world 占页面, 这个程序随便 google 一

下就能找到 我们可以自己想一想一个图形界面应该如何建立

首先我们要进行初始化, GTK 提供了 gtk_init() 作为初始化, 它检查程序参数

中的一些特定部分, 进行自己的设置 调用方法如下:

gtk_init(&argc, &argv);

将 argc 和 argv 传指针的目的是 gtk_init 会对他们进行加工, 把 GTK 自己

用到的一些参数抽取出来

接着, 我们必须要创建这些控件吧, GTK 中, 创建一个控件会返回一个

GtkWidget 类型 (或它的派生类) 的指针, 所有创建控件的函数的格式是

gtk_控件类型_new(参数表) 比如创建一个窗口的写法是:

GtkWidget window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

然后, 我们要设定事件响应函数, GTK 中的事件叫做 signal GTK 的事件响应

函数接口应该是类似这样的

void

destroy(GtkWidget widget, gpointer data)

我们把它连入到一个控件中的方法是这样的

g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(destroy), NULL);

应该很好理解吧

我们创建的咚咚, 要说明他们的位置和包含关系, GTK 用 container 来解决这

个问题, 它可以保证在窗口缩放的时候控件的摆放依然合理, container 的具体

使用不详细说, 后面经常要跟 container 打交道, 但基本上不用管 C 代码, 嗯

不过其实我们的任何的可视控件都继承自 container, 比如 button 也是一个

container, 它很多时候装的是一个 GtkLabel, 也就是用来显示纯文本的控件,

于是我们就能见到一个文本按钮, 嗯 使用 container 的方法如下

gtk_container_add(GTK_CONTAINER(window), button);

这样 button 就会占满整个 window 的控件, 我们后面可以看到可以用

GtkVBox, GtkHBox 等 container 分隔窗体

好了, 我们可以准备启动程序了, 我们可以用 gtk_widget_show() 来显示各个

控件, 然后我们就应该进入到所谓的事件响应循环了, 这就要使用 gtk_main()

在程序运行过程中, 我们要 *** 纵控件, 比如说我们要在一个 entry 控件(文本框

) 中取出其中的文字, 这样的 *** 作使用 gtk_控件类型_动作(对象, 参数) 的形

式完成的, 比如刚才所说的任务, 做法是 gtk_entry_get_text(entry)

顺便讲讲 GTK 程序的退出, 关闭 GTK 的窗口 (即使是所有窗口) 也不代表程序

退出, 因为那说到底只是一个界面而已, 我们当然可以使用 exit() 的自爆法退

出, 但最好还是给 GTK 一个料理后事的机会, 在主窗口的 destroy 事件响应函

数上用 gtk_main_quit() 就好了

编译 GTK 程序的办法也很简单

gcc -o foo fooc `pkg-config --cflags --libs gtk+-20`

使用 Glade 快速定制用户界面

好了, 说了一堆有的没的, 如果我现在说我上面说的那一堆中的大部分我们都不

会用到, 是不是觉得偶很歉扁 前面的介绍只是给大家 GTK 这个库的一些基本

概念, 概念就好了, 我们倒真的不用拿这些来编程的 想想, 一个复杂一点的界

面, 十几个控件, 再加上各种各样的 container, 自己挂事件, 再加上超常的命

名, 想想都恐怖

这时候, Glade 横空出世了! 这是一个可视化的界面编辑器 --- 但它仅仅是一

个界面编辑器而已, 甚至连代码编辑框也没有给出 先不管了, 打开 glade (安

装省略, 饶了我把, 记得装 libglade-dev), 应该很好懂了, 指指点点就能弄好

一个界面, 然后在属性窗的信号一栏中选取需要的信号, 设定响应函数, 非常好

玩了几分钟, 问题来了, 怎么把它变为程序啊 提供类似功能的 IDE 如

Borland C++ Builder, 在点击创建新控件的时候, 我们能即使在代码窗看到自

动生成的代码, Glade 也可以采用这种形式, 在设计好界面并保存后, 按一下主

窗口的 build 按钮, 它就自动生成了界面代码, 根本不用自己写的 打开代码

目录, callbacksc 里已经有自动创建的事件响应的空函数, 在里面填处理, 然

后 configure make 就行了

但是, 这样的开发方式还是有问题的 第一, 自动生成的代码非常复杂, 可是很

多时候我们还是不能完全不看它, 处理和界面是混在一起了, 理解他们变得困难

; 其二, 由于以上的原因, 修改界面变得非常痛苦; 其三, 它给你生成那堆有的

没的配置文件不一定是你想要的

因此 glade 提供了另一种方法, glade 编辑所得的 glade 文件是一个 XML 文

件, 其实它已经完整地描述了界面, 我们能否采用一种简单的方式直接载入, 配

置它呢 这样做, 我们的代码中就真真正正地去处了烦人的界面生成代码, 而专

注于处理部分了

libglade 正是由于这个而来, 它能很好地完成上面所说的工作 当我们用

glade 创建了一个 glade 界面后, 用这种方法我们就可以建立界面, 运行程序

#include <gtk/gtkh>

#include <glade/gladeh>

GladeXML GUI;

int

main(int argc, char argv)

{

gtk_init(&argc, &argv);

/ load the interface /

GUI = glade_xml_new("frameglade", NULL, NULL);

/ connect the signals in the interface /

glade_xml_signal_autoconnect(GUI);

/ start the event loop /

gtk_main();

return 0;

}

剩下的事情很简单, 如果你的 button 的 clicked 控件有一个响应函数

on_button_clicked, 你写

void

on_button_clicked(GtkWidget widget, gpointer data)

{

// balabalabala

}

就可以了 所以, 上面讲的一堆创建界面的方法, 其实大部分时候都用不着

由于用到了 libglade, 我们的编译方法变为

gcc -o foo fooc `pkg-config --cflags --libs libglade-20`

开发举例

一个很简单的程序, 密码学对称加密算法要用到的, 如果说是界面, 就是三个文

本框: 明文, 密码, 密文, 三个按钮, 加密, 解密, 清除, 完了 为了实验众多

的算法, 我们加了一个下拉窗口, 用来选择算法 我把它设计成一个 wrapper

和框架, 它不实现任何算法, 只是在界面中获取用户输入, 调用外部程序, 并把

结果显示出来而已 这样, 实际的算法实现可以用纯 C 写的文本界面程序完成,

移植起来很方便, 在 windows 随便做个一样的界面做前端就整个移植过去了

于是, 我们需要的窗体元素是 GtkEntry, GtkComboBoxEntry, GtkButton, 查查

手册, 我们用到的界面相关的函数只有以下几个:

- gtk_entry_get_text(), 用于获取文本框输入

- gtk_entry_set_text(), 用于在文本框中显示结果

- gtk_combo_box_get_active_text(), 用于在 ComboBoxEntry (派生自

ComboBox) 取出用户选中的算法

另一个问题是, 他们都需要相应的对象指针做参数, 这应该怎样获得呢 我们使

用 glade_xml_get_widget(GUI, "控件名") 就能取得控件了

以上就是关于在linux下设计一个c程序,这是我们的作业~~全部的内容,包括:在linux下设计一个c程序,这是我们的作业~~、unix/linux程序设计是什么意思、linux课程设计聊天qt等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9509184.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存