Linux
文章平均质量分 70
Fighting Horse
专注移动端、桌面端跨平台程序架构;深入网络、音视频、3D渲染等技术应用。
展开
-
嵌入式 Qt/Qml 屏幕旋转(横屏,竖屏)问题的解决
嵌入式 Linux 的一个小屏幕,正常是竖屏模式,可是我们产品中需要横着使用。 Qml 代码已经写好了,在 PC 正常工作。然后移植到嵌入式 Linux,问题来了,屏幕方向不对,显示不正常。 那就去网上找方法吧。不可行方案方案一:export QT_QPA_EGLFS_ROTATION=90没有任何效果。方案二:export QT_QPA_ROTATION=linuxfb:rotation=90...原创 2021-11-25 20:36:32 · 6305 阅读 · 10 评论 -
Android 源码分析 - 系统 - init (7 ueventd)
init.c的main函数也是ueventd和watchdogd的入口,main通过argv[0]的不同分派到ueventd_main和watchdogd_main。参考:Android ueventd解析 ueventd.rc 处理硬件设备权限和android init 对其解析 android之init进程-uevent watchdog-api.txt Netlink netlink socket 编程之 why & howueventd脚本配置每个设备节点的权限,格式:原创 2021-10-19 22:37:52 · 158 阅读 · 0 评论 -
linux 常用工具基本用法
1、系统工具2、文件管理3、网络工具3.1、防火墙(iptables)iptables -L -niptables -A INPUT -p tcp --dport 21 -j ACCEPT3.2、远程访问(ssh)ssh -l root 192.168.1.100ssh -L 2201:localhost:22 192.168.1.100ssh -R 2原创 2013-12-04 09:47:15 · 659 阅读 · 0 评论 -
apache 常用配置
1.1 映射用户目录假设 linux 用户名 abc,我们希望下面的地址访问在是 abc 用户的文件http://192.168.1.100/abc/需要在 /etc/apache2/httpd.conf 文件里面配置下面内容:Alias /abc "/home/abc" Options Indexes FollowSymLinks AllowOverride原创 2014-03-25 09:41:10 · 626 阅读 · 0 评论 -
gitolite 安装
sudo adduser --system --shell /bin/bash --group gitsudo adduser git sshsudo passwd gitsu gitcdgit clone git://github.com/sitaramc/gitolitecd gitolite/mkdir $HOME/binssh-keygen [ent原创 2014-04-26 09:18:49 · 649 阅读 · 0 评论 -
Android 源码分析 - 系统 - init (1 简介)
1.1initInit是内核 kernel 初始化完成后启动的第一个进程。进程ID为1。Init的源代码在system/core/init/目录。参考:Øandroid的init过程分析ØAndroid的init过程详解(一)ØAndroid的init过程(二);初始化语言(init.rc)解析ØAndroid研究-Android系统初始化程序init和原创 2014-06-08 09:22:41 · 922 阅读 · 0 评论 -
Android 源码分析 - 系统 - init (2 初始化流程)
初始化流程初始化主流程在init.c中实现。1.初始化根目录下的文件系统/dev、/proc、/sys2.重定向标准输入输出到/dev/__null__(open_devnull_stdio,设备号0x0103)3.初始化klog(klog_init,/dev/__kmsg__设备号0x010B)4.初始化属性系统原创 2014-06-08 09:25:19 · 1312 阅读 · 0 评论 -
shell中的套接字编程
在shell中,也可以创建套接字,连接服务器,发送请求接收应答原创 2014-06-18 16:35:32 · 1921 阅读 · 0 评论 -
Linux (Ubuntu) 下文件共享服务 Samba 安装
安装sudo apt-get install samba配置,每个 linux 用户独立访问各自的 home 目录打开配置文件,找到 homes 配置组,如下修改sudo vim /etc/samba/smb.conf[homes] comment = Home Directories browseable = no# By default, the...原创 2013-09-11 13:21:07 · 872 阅读 · 0 评论 -
在 redhat 上编译
sudo yum install perl-ExtUtils-MakeMakersudo yum install libcurl-develsudo yum install expat-develsudo yum install gettextmake prefix=/usr allmake prefix=/usr install原创 2016-09-07 13:21:36 · 645 阅读 · 0 评论 -
Java 与 C 中动态链接库搜索规则
动态链接库搜索规则1、java 中加载 native libraryjava 中 System.loadLibrary 会调用 Runtime.loadLibary,后者调用 java/lang/ClassLoader.loadLibrary。在 ClassLoader.loadLibrary 中,会检查系统属性 java.library.path ,在其指定的目录(多个)中搜索 nat...原创 2019-04-30 18:00:08 · 234 阅读 · 0 评论 -
linux 下 动态链接库 so 之间的符号冲突
在 linux 下编写动态链接库程序,需要注意 dll 之间的符号冲突。当我们链接库需要提供给很多方集成使用,需要面对复杂的集成环境,其中一个大问题就是与第三方集成环境的符号冲突。这些冲突有些不是通过严格控制名字空间解决的,比如当我们使用了一些开源库,我们不清楚第三方集成环境有没有这些库,即使有是不是版本匹配,我们也不想对第三方集成环境提太多要求,这会增加集成成本。在这种情况下,我们会将这原创 2013-12-04 19:37:41 · 8507 阅读 · 0 评论 -
awk使用手册
什么是awk? 你可能对UNIX比较熟悉,但你可能对awk很陌生,这一点也不奇怪,的确,与其优秀的功能相比,awk还远没达到它应有的知名度。awk是什么?与其它大多数UNIX命令不同的是,从名字上看,我们不可能知道awk的功能:它既不是具有独立意义的英文单词,也不是几个相关单词的缩写。事实上,awk是三个人名的缩写,他们是:Aho、(Peter)Weinberg和(Brain)Ke转载 2008-10-14 13:49:00 · 525 阅读 · 2 评论 -
关于 android 子进程域名解析失败的问题
场景:android ndk 开发两个进程,一个主进程,一个子进程,主进程创建子进程主进程和子进程都调用getaddrinfo做域名解析现象:主进程域名解析一切OK子进程失败,错误码:HOST_NOT_FOUND 一直以为是android的bug,去网上找,没有任何相关的问题和解答。后来想到创建子进程使用了自己写的一个分装类,不知道直接用fork + exec情原创 2012-07-29 09:06:26 · 4567 阅读 · 0 评论 -
debian+mysql+apache+php 配置
aptitude install build-essentialapt-get -f install libncurses5-dev# http://dev.mysql.com/doc/refman/5.1/en/installing-source.html# http://dev.mysql.com/doc/refman/5.1/en/quick-install.htmlgroupa原创 2008-11-17 09:51:00 · 852 阅读 · 0 评论 -
进程互斥锁
进程间共享数据的保护,需要进程互斥锁。与线程锁不同,进程锁并没有直接的C库支持,但是在Linux平台,要实现进程之间互斥锁,方法有很多,大家不妨回忆一下你所了解的。下面就是标准C库提供的一系列方案。1、实现方案不出意外的话,大家首先想到的应该是信号量(Semaphores)。对信号量的操作函数有两套,一套是Posix标准,另一套是System V标准。Posix信号量sem_t *原创 2012-07-11 18:13:14 · 28727 阅读 · 2 评论 -
安全且平台兼容的进程互斥锁
在《进程互斥锁》中,我们看到了实现进程互斥锁的几个常见方案:Posix信号量、System V信号量以及线程锁共享,并且分析了他们的平台兼容性以及严重缺陷。这里要介绍一种安全且平台兼容的进程互斥锁,它是基于文件记录锁实现的。1、文件记录锁UNIX编程的“圣经”《Unix环境高级编程》中有对文件记录锁的详细描述。下载链接:http://dl02.topsage.com/club/co原创 2012-07-11 20:20:44 · 4100 阅读 · 2 评论 -
如何在linux 32位机器编译64位程序
编译64位程序,不一定要编译机器是64位的,但是32位机器默认安装的gcc编译环境还是不能用来编译64位程序。编译64位程序,需要加上-m64编译器参数,默认安装的gcc已经支持该参数,但是缺少64位机器指令相关的文件,所以不能编译,会出现下面的错误In file included from /usr/include/features.h:378, fr原创 2012-08-02 12:24:51 · 8290 阅读 · 1 评论 -
带超时的等待子进程,timed_wait
如果想等待子进程结束,在发送了结束信号(父子进程约定一个退出信号),等待一段时间(比如2秒钟),就强制杀死子进程(SIGKILL),怎么实现呢?首先想到使用一个线程,在线程中sleep 2 秒,然后杀死子进程,如果在这之前子进程已经退出,只不过会在kill时收到一个错误。方法确实有效,不过代价好像大了点。原创 2012-07-29 09:09:04 · 1456 阅读 · 0 评论 -
各平台共享内存的实现方式
UNIX在内存共享问题上,UNIX历史上主要有两个标准:Posix与System V,相比来说Posix标准更符合统一风格要求,与文件系统结合,更易于使用。除了这两个标准,还有一种基于磁盘文件映射的机制。PosixPosix标准提供一种共享内存文件设备,通过访问共享内存文件设备来实现进程间的数据共享。共享内存文件是通过shm_open创建,通过shm_unlink删除,这和普通文件的创原创 2012-07-23 13:55:32 · 2487 阅读 · 0 评论 -
linux下获取进程网络链接状况(包括打开的侦听端口号)
在做一个本地服务(服务器端和客户端在同一个机器上,通过回环端口直接访问)时,因为端口可能会被其他程序占用,服务器端会尝试找到一个可用端口,客户端需要逐个尝试连接各个端口,并且与服务器端完成一个验证过程,才能最终确认服务器端的侦听端口。即使双方可以约定从某个端口开始,每次加1尝试,提高发现效率,但是实现起来还是要费一番心事的。有没有办法直接获得服务器端程序侦听的端口号呢?我们知道netsta原创 2012-07-24 17:22:41 · 6979 阅读 · 1 评论 -
如何使用自己的makefile编译android ndk项目
android ndk提供了一套自己的makefile管理方式,要将源码项目移植到android平台,需要按照android的makefile规则编写makefile,还要按android的规则部署源码目录,对一个有自己的makefile管理方法的大型项目来说,只是做一下makefile迁移工作就是一件很麻烦的事。其实android ndk上的编译说到底也就是交叉编译,只要配置好交叉编译工具链原创 2012-08-01 17:20:50 · 4723 阅读 · 3 评论 -
macos 平台 makefile 中调用 svn 出错
在macos 平台, makefile 中调用 svn 出错,出错信息说:not a working copy,就是不是svn管理的目录通过逐步删除一部分make脚本,定位出:如果make脚本里面执行了shell的cd命令,就会有问题。把调用cd命令的地方用其他方式替代,解决问题。深层次原因未知,留待以后再查。原创 2012-09-24 19:44:21 · 845 阅读 · 0 评论 -
UTC 时间转换为 time_t
time_t time_gm( struct tm * tm ) {#ifdef __FreeBSD__ return timegm( tm );#elif (defined(__ANDROID__)) && (!defined(__SONY_ANDROID_TV__)) return ( time_t )( timeg原创 2012-09-26 08:48:04 · 3026 阅读 · 0 评论 -
trace的应用
进程无法启动,软件运行速度突然变慢,程序的"Segment Fault"等等都是让每个Unix系统用户头痛的问题,本文通过三个实际案例演示如何使用truss、strace和ltrace这三个常用的调试工具来快速诊断软件的"疑难杂症"。 truss和strace用来跟踪一个进程的系统调用或信号产生的情况,而 ltrace用来跟踪进程调用库函数的情况。truss是早期为System V R4开发转载 2008-10-06 15:05:00 · 880 阅读 · 0 评论