嵌入式学习中遇到的错误及其解决办法

本文介绍了RedHat系统中常见的启动错误及Eclipse安装问题的解决办法,包括配置错误修复、JDK安装步骤及版本不匹配问题解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    嵌入式学习中遇到的错误及其解决办法

                redhat版)

一:启动redhat时出现下面情况的解决办法、

(转载网上,但可行性高)

     gnome-session 装入或保存配置信息时发生错误

 gnome-session 装入或保存配置信息时发生错误。您的某些配置设置可能不能正常工作。

在为 gnome-terminal 装入或保存配置信息时发生错误。您的某些配置设置可能不能正常工作。

在为 Nautilus 装入或保存配置信息时发生错误。您的某些配置设置可能不能正常工作

在为 rhn-applet 装入或保存配置信息时发生错误。您的某些配置设置可能不能正常工作。

GConf 错误:无法联系配置服务器;某些可能原因是需要为 ORBit 启用 TCP/IP 联网,或者由于系统崩溃,您的 NFS 锁定已失效。请访问 http://www.gnome.org/projects/gconf/ 了解详细信息。(详细信息 1: IOR 文件“/tmp/gconfd-root/lock/ior”没有成功打开,无 gconfd 位于:没有那个文件或目录 2: IOR 文件“/tmp/gconfd-root/lock/ior”没有成功打开,无 gconfd 位于:没有那个文件或目录)


在为 gnome-panel 装入或保存配置信息时发生错误。您的某些配置设置可能不能正常工作。


在为 Print Notifier 装入或保存配置信息时发生错误。您的某些配置设置可能不能正常工

删除/tmp文件下的所以文件就可以了
命令:rm -rf /tmp/*
从新启动就OK了!

 

二: redhat中安装eclipse集成开发环境时,jlink软件安装好之后第一次没连接上,多连几次就好了,还不行就将虚拟机上的U盘标志断开连接再连一次

  安装好eclipse后,运行出现如下 错误及其解决方法:

分类: linux

 

   Linux下安装Eclipse出现错误failed to load the jni shared

Linux下安装Eclipse出现如下错误

failed to load the jni shared library"/usr/local/java/jdk1.6.0_21/bin/../jre/lib/i386/client/libjvm.so

解决方法:关闭selinux即可解决。

vi /etc/sysconfig/selinux

修改:SELINUX=enforcing 为:SELINUX=disable 禁用SeLinux, 再重启运行即可

如果不想重启,执行命令:setenforce 0

就可以不重启关闭selinux

 安装好eclipse后运行若出现了与JVM不匹配则是jdk版本低了,     安 装高版本如下

Linux Redhat5 jdk1.6安装过程

1.首先从官方网站下载安装包,x86 32位机有两种格式:下载页面链接:http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u31-download-1501634.html

这里我们以 jdk-6u31-linux-i586.bin的安装为例,将 jdk-6u31-linux-i586.bin下载下来;

2.root用户登录到Linux服务器,下载好的软件包放到Linux服务器的某个目录下,此处我放在/filedata/soft目录里面

  进入安装包所在的目录, 执行chmod +x  jdk-6u31-linux-i586.bin 命令给二进制包赋予可执行权限:

[root@localhost soft]# chmod +x jdk-6u31-linux-i586.bin
[root@localhost soft]# ll jdk-6u31-linux-i586.bin -rwxr-xr-x root root 85292206 02-27 15:25 jdk-6u31-linux-i586.bin

3.在终端输入如下命令运行二进制包:

#./jdk-6u31-linux-i586.bin

运行过程快结束的时候会出现提示按回车键,按Enter键,命令运行结束后会在当前目录下生成目录:jdk1.6.0_31

4.将生成的jdk1.6.0_31移动到/usr/local下面

#mv  /filedata/soft/jdk1.6.0_31/    /usr/local/jdk1.6.0_31/

 

5.依次输入 如下命令删除系统自带的openjdk(如果有的话):

alternatives remove java /usr/share/java/libgcj-java-placeholder.sh

alternatives --remove javac /usr/share/java/libgcj-javac-placeholder.sh

alternatives --remove jar /usr/bin/fastjar

alternatives --remove jar.1.gz /usr/share/man/man1/fastjar.1.gz 

rm  -rf   /usr/bin/java

rm  -rf   /usr/bin/javac

6.依次执行下面的命令,建立软连接:   (1)./usr/bin 下建立 软连接 java

     ln  -s    /usr/local/jdk1.6.0_31/bin/java     /usr/bin/java

     ln  -s    /usr/local/jdk1.6.0_31/bin/javac     /usr/bin/javac

   (2).为了方便后面的工作建立两个软链接:

      cd   /usr/local/

      ln -s   /usr/local/jdk1.6.0_31/     /usr/local/jdk

      ln -s   /usr/local/jdk1.6.0_31/jre    /usr/local/jre

7.编辑配置文件/etc/profile,添加环境变量JAVA_HOMEJRE_HOMECLASSPATH,如下所示:

     export CATALINA_HOME=/usr/tomcat4
     export JAVA_HOME=/usr/local/jdk
     export JRE_HOME=$JAVA_HOME/jre
     export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

 

        编辑好保存后执行 source  /etc/profile 命令,使配置文件即时生效: source  /etc/profile

至此,jdk就安装好了,执行java  -version命令验证:

[root@localhost jdk]# java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) Server VM (build 20.6-b01, mixed mode)


三:

    在一个驱动程序中当添加.h文件时如果用< >括起来可能会显示没有那个文件的错误,用””括起来,则不会出现错   误!


 

 

### 嵌入式系统的常见BUG及其解决方案 #### 多任务环境下的资源竞争 在实时操作系统(RTOS)环境中,多个任务可能访问相同的全局函数或变量。这种情况下容易引发竞态条件(race condition),即不同任务之间相互干扰导致程序行为异常。为了防止此类问题的发生,应当遵循可重入(reentrant)原则设计共享功能模块[^2]。 ```c // 非线程安全的例子 int global_counter; void increment() { int temp = global_counter; // 可能被其他任务打断 temp += 1; global_counter = temp; // 再次被打断可能导致错误更新 } // 改进后的版本使用互斥锁保护临界区 #include "FreeRTOS.h" #include "semphr.h" SemaphoreHandle_t counterMutex; void init_mutex(){ counterMutex = xSemaphoreCreateMutex(); } void safe_increment(void){ if (xSemaphoreTake(counterMutex, portMAX_DELAY)) { static volatile int local_counter; local_counter++; xSemaphoreGive(counterMutex); } } ``` #### 中断处理与任务调度冲突 当应用程序既包含普通任务又涉及中断服务例程(ISR)时,两者之间的协调至关重要。如果ISR执行时间过长,则会延迟高优先级的任务响应;反之亦然。因此,在编写代码之前应该仔细规划好各部分的工作量以及它们之间的交互方式。 #### 栈溢出风险防范措施 由于嵌入式设备通常拥有有限的内存容量,所以开发者必须谨慎对待每一个局部对象占用的空间大小。特别是那些位于自动存储期内的大型数组,很容易耗尽当前上下文所允许的最大限度而造成崩溃。建议采用动态分配机制或将这些实体移至静态作用域内声明[^3]。 ```c #define STACK_SIZE_LIMIT 512 /* 定义合理的栈尺寸 */ /* 不推荐的做法 */ void risky_function(){ char big_buffer[STACK_SIZE_LIMIT * 2]; // 这里可能会超出范围 } /* 推荐做法之一:利用heap代替stack*/ void safer_approach_with_heap(){ void* buffer = malloc(STACK_SIZE_LIMIT); free(buffer); } /* 或者改为全局/静态定义 */ static char stable_storage[STACK_SIZE_LIMIT]; void another_safe_way(){ memset(stable_storage ,0,sizeof(stable_storage)); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值