OpenWRT编译 -- 搭建属于自己的openwrt的开发环境

本文详细介绍了在Ubuntu16.04LTS系统下,从GitHub克隆OpenWRT源码并进行编译的全过程,包括解决常见编译问题的方法,如SSH密钥生成、配置调整、依赖库安装等。

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

系统版本:ubuntu 16.04 LTS 64bits

零、流程化、标准化的步骤,光明的大道往前走

1、先从github clone下来

git clone https://git.openwrt.org/openwrt/openwrt.git

如果比较慢或者不能clone可以换成:

git clone git://git.openwrt.org/openwrt/openwrt.git

2、在完成clone之后。然后在openwrt目录下

./scripts/feeds update -a 
./scripts/feeds install –a

注:./scripts/feeds 这个脚本只是使软件包出现在 make menuconfig 配置菜单中, 而并不是真正的安装或者编译软件。

此过程比较慢,建议提前下载好 dl feeds 文件,拷贝到对应目录下,然后进行后续操作。

3、然后选择硬件对应的平台

make menuconfig

4、编译

make V=99 或者 make V=s

在这里个人不建议在第一次编译的时候使用多线程编译,容易出问题,如果实在想走出自己的风格,可以使用多线程进行编译

make V=99 -jn # n为使用的线程数,比如 1线程就使用 j1

然后确保联网没问题,慢慢等着就行了。

一、记录下在这条宽阔又光明的大道上驰骋的时候填的那些被莫名其妙的坑

1、如果在下载的过程中出现过早的文件结束符(EOF)

fatal: The remote end hung up unexpectedlyB | 44.00 KiB/s
fatal: 过早的文件结束符(EOF)
fatal: index-pack failed

解决:

git config --global http.postBuffer 1048576000
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999  # 单位 秒

最主要的是:

ssh-keygen -t rsa

回车、回车、再回车

我的效果图

 

如果还不行,则可以查看一下大神的记录,这是传送门:使用 git 克隆 github 上的项目失败

2、在进行 make menuconfig 的时候保证终端不要太小,不然也会出现问题的,我正好也经历过。

3、编译过程中

configure: error: you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check)

解决:

export FORCE_UNSAFE_CONFIGURE=1
source /etc/profile
然后:
su –root  # 切换到root账号
make V=99 # 编译

则开始往下进行了。

4、如果出现

scripts/config/mconf: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

/home/song/openwrt.cpy/include/toplevel.mk:136: recipe for target 'menuconfig' failed

make: *** [menuconfig] Error 127

那么可以先用ldd查看一下:

ldd libncurses.so.5

ldd: ./libncurses.so.5: No such file or directory

安装 libncrurses 即可,类似的问题应该会很多,类似的办法即可。

sudo apt-get install libncrurses

5、Openwrt在编译过程出现

mipsel_24kc_musl/linux-ramips_mt76x8/tmp/openwrt-ramips-mt76x8-cudy_wr1000-squashfs-factory.bin": No such file or directory

实际上导致此问题的原因是:

Image file /home/song/openwrt/openwrt/build_dir/target-mipsel_24kc_musl/linux-ramips_mt76x8/tmp/openwrt-ramips-mt76x8-cudy_wr1000-squashfs-factory.bin is too big

提示的错误为

错误提示信息

 

可以看出来:

openwrt-ramips-mt76x8-cudy_wr1000-squashfs-factory.bin is too big

但是实际我们需要编译的是 MT7628 的文件,这个实际上与我们需要的没有多大的关系,可以修改 mt76x8.mk。

vi target/linux/ramips/image/mt76x8.mk

第一种方法:不知道后遗症,但是肯定不影响 MT7628 相关的文件

修改示意

 

下载测试生成的内核文件,没有任何问题

生成的内核文件示意-MT7628

 

第二种方法:删掉与cudy_wr1000相关的部分的内容(慎重删除,如果不需要则直接删除还能省空间)

修改示意图

基于第二种方法,发现删除不相关的内容之后(由于在编译的过程中出现了很多类似的问题),编译明显的快了不少,所以,在mt76x8.mk中只保留了两三个选项。

上面的基本上都是在编译的过程中出现的问题,在openwrt这个修身养性的漫漫长路上,记得要控制好脾气,毕竟绳命要紧!

 

 

 

### 回答1: 在使用Java语言中的Idea集成开发环境连接MySQL数据库时,需要使用Java Database Connectivity(JDBC)技术。以下是连接MySQL数据库的步骤: 1.下载并安装MySQL数据库驱动程序。可以从官方网站下载MySQL Connector/J,或者使用Maven或Gradle等构建工具来获取驱动程序。 2.在Idea项目的classpath中添加MySQL数据库驱动程序。 3.编写Java代码来连接MySQL数据库。示例代码如下: ```java import java.sql.*; public class MysqlJdbcTest { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/test"; String username = "root"; String password = "123456"; Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url, username, password); System.out.println("成功连接到数据库!"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } } ``` 在以上代码中,需要修改url、username和password变量的值以匹配实际的MySQL数据库连接信息。其中,url变量指定了MySQL服务器的地址和端口以及要连接的数据库名称。username和password变量则指定了连接数据库所需的用户名和密码。最后,使用Java中的JDBC技术连接MySQL数据库,并在控制台输出连接成功信息。 ### 回答2: idea使用jdbc连接mysql数据库非常简单,只需要按照以下步骤进行操作即可。 步骤一:在pom.xml文件中添加mysql驱动依赖项 ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.40</version><!--版本号根据实际情况而定--> </dependency> ``` 步骤二:编写代码连接mysql数据库,并执行操作 ```java public class JdbcTest { public static void main(String[] args) { String driver = "com.mysql.jdbc.Driver";//mysql驱动程序 String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8";//数据库连接地址 String username = "root";//用户名 String password = "root";//密码 Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { Class.forName(driver);//加载mysql驱动程序 connection = DriverManager.getConnection(url, username, password);//获取连接 statement = connection.createStatement();//创建statement对象 String sql = "SELECT * FROM student";//sql语句 resultSet = statement.executeQuery(sql);//执行查询操作 while (resultSet.next()) {//遍历结果集 int id = resultSet.getInt("id"); String name = resultSet.getString("name"); String sex = resultSet.getString("sex"); System.out.println(id + "\t" + name + "\t" + sex); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if(resultSet!=null){ resultSet.close();//关闭结果集 } if(statement!=null){ statement.close();//关闭statement对象 } if(connection!=null){ connection.close();//关闭连接 } } catch (SQLException e) { e.printStackTrace(); } } } } ``` 以上代码中,通过jdbc连接mysql数据库,获取连接后,使用`Statement`对象创建sql语句,并通过`executeQuery()`方法执行查询操作。最后使用`ResultSet`对象遍历结果集,输出结果。 总的来说,idea使用jdbc连接mysql数据库步骤非常简单,只需要按照以上步骤进行编写即可,这也是编写Java Web开发的基础知识之一。 ### 回答3: Idea是一款流行的Java IDE,它提供了JDBC连接MySQL数据库的功能。JDBC是Java数据库连接的标准接口,它允许Java程序与各种各样的关系型数据库进行交互。MySQL是一款免费的开源数据库,在企业级应用和Web开发中广泛使用。 在Idea中连接MySQL数据库需要进行以下步骤: 1. 导入MySQL JDBC驱动 在项目的pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.22</version> </dependency> ``` 或者在Idea中的Modules Setting中的Dependencies选项卡中手动导入。 2. 创建数据库连接 在Java代码中使用以下代码创建数据库连接: ```java Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/DatabaseName?useSSL=false&serverTimezone=UTC", "username", "password"); ``` 其中,com.mysql.cj.jdbc.Driver是MySQL 8.0版本的驱动类,localhost:3306是数据库的IP地址和端口号,DatabaseName是要连接的数据库名称,username和password是数据库的用户名和密码。useSSL=false表示不使用SSL连接,serverTimezone=UTC表示使用UTC时区。 3. 使用SQL语句操作数据库 通过创建的Connection对象,可以使用Java代码执行SQL语句操作MySQL数据库,例如查询数据: ```java Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM TableName"); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); // ... } ``` 其中,TableName是要查询的表的名称,id和name是表中的列名。 4. 关闭连接 在使用完数据库后,需要关闭Connection、Statement和ResultSet对象,例如: ```java rs.close(); stmt.close(); conn.close(); ``` 通过以上步骤,就可以在Idea中使用JDBC连接MySQL数据库了。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青椒*^_^*凤爪爪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值