libdrm-2.4.112

news2024/11/20 9:41:03

编译

这个版本使用了meson进行构建、ninja进行编译 ;

安装meson

编译

 报错如上,查看meson.build文件,

我们的meson版本不正确, 查阅发现apt安装的版本过低;

安装meson

sudo apt-get install python3 python3-pip ninja-build

pip3 install --user meson

很奈斯

继续编译

 

发现报错,重启,又报错,

看来 之前没有安装py-3.7,重新安装

卸载自带的python3和python3.6导致重启后系统异常

用ubuntu18镜像重启,进livecd,编辑 /etc/resolv.conf,加入以下

nameserver 8.8.8.8

nameserver 8.8.4.4

切到系统盘 chroot  xxxx

apt install ubuntu-desktop

又报permission denied,但是重新安装发现只需要0B,直接重启试试, 可以进桌面了,但是网络无法使用了,没有网络设备

ifconfig ens33 up

netplan命令无法使用,重新进livecd安装

permission denied这个问题请使用手动mount到mnt目录解决;

卸载ubuntu-desktop,然后重装,又报下面的错误了

但愿只是个日志的记录;重启netplan可以使用,ubuntu界面也正常,但是 还是没有网络设备,再进livecd,对比安装包,apt list --installed | grep network

加装这两项 ,无效,又出现 no read/write access to /var/lib/plan

对比正常的系统

少了一样东西, 再次对比

 

 

 进livecd重装,好了,牛逼;

切换python版本

update-alternatives --display python    //查看当前的系统配置

apt list --installed | grep python    //查看所有安装的python版本

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1    //添加版本配置

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 2    //添加版本配置

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 3    //添加版本配置

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 4    //添加版本配置

sudo update-alternatives --config python    //选择版本

选择版本的时候发现,自动选择的是priority高的

修改python3.6的优先级为300,让系统自带的python3.6在系统起来的时候可以正常被选择,

如果需要删除某个版本配置,使用以下命令

sudo update-alternatives --remove python /usr/bin/python2.7

好了,牛逼;

继续编译

meson build \
 --prefix=vexpress/rootfs \
 --cross-file=cross_file.txt \
 -D amdgpu=false \
 -D cairo-tests=false \
 -D etnaviv=false \
 -D exynos=true \
 -D freedreno=false \
 -D freedreno-kgsl=false \
 -D install-test-programs=true \
 -D intel=false \
 -D libkms=false \
 -D man-pages=false \
 -D nouveau=false \
 -D omap=false \
 -D radeon=false \
 -D tegra=false \
 -D udev=false \
 -D valgrind=false \
 -D vc4=false \
 -D vmwgfx=false

上面的命令报错,

 删除libkms试试,又报错,

 重新安装python3试试,已安装呀;重新安装python3-pip,再遍,没有报错了,

meson build \
 --prefix=vexpress/rootfs \
 --cross-file=cross_file.txt \
 -D amdgpu=false \
 -D cairo-tests=false \
 -D etnaviv=false \
 -D exynos=true \
 -D freedreno=false \
 -D freedreno-kgsl=false \
 -D install-test-programs=true \
 -D intel=false \
 -D man-pages=false \
 -D nouveau=false \
 -D omap=false \
 -D radeon=false \
 -D tegra=false \
 -D udev=false \
 -D valgrind=false \
 -D vc4=false \
 -D vmwgfx=false


The Meson build system
Version: 0.61.5
Source dir: vexpress/test/libdrm-2.4.112
Build dir: vexpress/test/libdrm-2.4.112/build
Build type: cross build
Project name: libdrm
Project version: 2.4.112
C compiler for the host machine: arm-linux-gnueabi-gcc (gcc 7.3.0 "arm-linux-gnueabi-gcc (Ubuntu/Linaro 7.                                                               3.0-16ubuntu3) 7.3.0")
C linker for the host machine: arm-linux-gnueabi-gcc ld.bfd 2.30
C compiler for the build machine: cc (gcc 7.3.0 "cc (Ubuntu 7.3.0-16ubuntu3) 7.3.0")
C linker for the build machine: cc ld.bfd 2.30
Build machine cpu family: x86_64
Build machine cpu: x86_64
Host machine cpu family: arm
Host machine cpu: armv7
Target machine cpu family: arm
Target machine cpu: armv7
Run-time dependency threads found: YES
Program symbols-check.py found: YES (/usr/bin/python3 vexpress/test/libdrm-2.4.112/symbols-chec                                                               k.py)
Program nm found: YES (/usr/bin/nm)
Program python3 found: YES (/usr/bin/python3)
Found Pkg-config: NO
Found CMake: NO
Run-time dependency atomic_ops found: NO (tried pkgconfig and cmake)
Checking if "Intel Atomics" : links: YES
Checking for function "dlsym" : NO
Library dl found: YES
Checking for function "clock_gettime" : YES
Library m found: YES
Check usable header "sys/select.h" : YES
Check usable header "alloca.h" : YES
Header <sys/sysmacros.h> has symbol "major" : YES
Header <sys/sysmacros.h> has symbol "minor" : YES
Header <sys/sysmacros.h> has symbol "makedev" : YES
Header <sys/mkdev.h> has symbol "major" : NO
Checking for function "open_memstream" : YES
Compiler for C supports arguments -Wsign-compare: YES
Compiler for C supports arguments -Werror=undef: YES
Compiler for C supports arguments -Werror=implicit-function-declaration: YES
Compiler for C supports arguments -Wpointer-arith: YES
Compiler for C supports arguments -Wwrite-strings: YES
Compiler for C supports arguments -Wstrict-prototypes: YES
Compiler for C supports arguments -Wmissing-prototypes: YES
Compiler for C supports arguments -Wmissing-declarations: YES
Compiler for C supports arguments -Wnested-externs: YES
Compiler for C supports arguments -Wpacked: YES
Compiler for C supports arguments -Wswitch-enum: YES
Compiler for C supports arguments -Wmissing-format-attribute: YES
Compiler for C supports arguments -Wstrict-aliasing=2: YES
Compiler for C supports arguments -Winit-self: YES
Compiler for C supports arguments -Winline: YES
Compiler for C supports arguments -Wshadow: YES
Compiler for C supports arguments -Wdeclaration-after-statement: YES
Compiler for C supports arguments -Wold-style-definition: YES
Compiler for C supports arguments -Wno-unused-parameter: YES
Compiler for C supports arguments -Wno-attributes: YES
Compiler for C supports arguments -Wno-long-long: YES
Compiler for C supports arguments -Wno-missing-field-initializers: YES
Run-time dependency pciaccess found: NO (tried pkgconfig and cmake)
Run-time dependency cunit found: NO (tried pkgconfig and cmake)
Program rst2man rst2man.py found: NO
Compiler for C supports function attribute visibility:hidden: YES
Configuring config.h using configuration
Build targets in project: 14
NOTICE: Future-deprecated features used:
 * 0.55.0: {'ExternalProgram.path'}

libdrm 2.4.112

    Intel                : False
    Radeon               : False
    AMDGPU               : False
    Nouveau              : False
    vmwgfx               : False
    OMAP                 : False
    Freedreno            : False
    Freedreon-kgsl       : False
    Tegra                : False
    Etnaviv              : False
    EXYNOS               : True
    VC4                  : False

  User defined options
    Cross files          : cross_file.txt
    prefix               : vexpress/rootfs
    amdgpu               : false
    cairo-tests          : false
    etnaviv              : false
    exynos               : true
    freedreno            : false
    freedreno-kgsl       : false
    install-test-programs: true
    intel                : false
    man-pages            : false
    nouveau              : false
    omap                 : false
    radeon               : false
    tegra                : false
    udev                 : false
    valgrind             : false
    vc4                  : false
    vmwgfx               : false

Found ninja-1.8.2 at /usr/bin/ninja
NOTICE: You are using Python 3.6 which is EOL. Starting with v0.62.0, Meson will require Python 3.7 or new                                                               er

 好的,牛逼;去看下输出目录,没有 ,还需要 执行ninja编译,meson只是构建;编译完成,再看下rootfs/lib,

 

 modetest也是重新安装了,且库都是存在的,启动vexpress试一下,

没有设备?正常应该是检测到pl111,需要核对下代码,先找下这个报错,从报错的地方开始找,

跟踪报错

 

 

发现是上面的drm_server_info==NULL, 然后这个drmOpenByName又失败,需要找找vexpress有没有正确编译进pl111驱动,参考网上帖子,配置出现报错,

vexpress配置探究

 查看发现pl111驱动也是这个名字,导致前面的驱动注册之后,这个注册不上;

查看makefile,发现很扯淡,

 为了快速解决,先看下高版本的内核有没有变动,

4.19和4.20.17对比,好像没啥区别,

4.19和 5.19.17对比, 变了一堆,我giao~,

 看看5.0.1的差距是不是小一些,

看来需要找个不冲突的版本了,参考网上别人用的,5.14.3,果然是干掉的,

就撅腚是你了~

使用vexpress_defconfig配置,不做任何修改,直接编译,然后发现又报错了,

pl111 deactived

查找代码,在这里,

 需要确认什么地方吧mux_motherboard置为false了,同时需要 确认为什么被置为false,

 但是继续看其他的日志,也没有问题,总之被加载了,但是modetest还是无法使用呀,/dev/dri下也没有设备,查看panel-arm-versatile.c并没有被编译,查看makefile,

想办法给他加上,

编译之后还是不行,查看这个文件的compatible,

 

发现只在versatile-ab.dts里面有配置,现在有两个选择,

1.把这个植到我们使用的dts中

2.找ab.dts用的是哪个defconfig

我们优先用2方式,省的多折腾,发现没有使用这个文件的,而且dts也不是在defconfig中指定的,dts文件夹中有很多dtb,这个是怎么来的?

尝试使用1但是无从下手,那么就使用versatile的配置编译试试吧,换上dtb,不行,启动都启动不了,看来versatile不是vexpress,这里需要更改 -M versatileab -m 256M,启动后kernel panic,后续再探究

在pl111_versatile.c中加上dump_stack,看下pl111_vexpress_clcd_init()的调用栈,没啥用,

注意到vexpress-v2p-ca9.dts中有clcd@10020000,对端port是dvi_bridge_in_ct,在vexpress-v2m.dtsi中找到dvi-transmitter@39,匹配的驱动是"sil,sii9022-tpi", "sil,sii9022",查找这两个是否有存在的,只有下面的驱动可以匹配,

 这个文件被编译了,找下驱动日志,加上enter和finish

驱动是正常加载的,查看日志,有几处错误,

can't create /proc/sys/kernel/hotplug: nonexistent directory

Device Drivers > Generic Driver Options > Support for uevent helper  打开这个选项

mounting debugfs on /sys/kernel/debug failed: No such file or directory

Kernel hacking > Generic Kernel Debugging Instruments > Debug Filesystem  打开这个选项

Failed to initialize '/bus@4000000/motherboard/iofpga@7,00000000/timer@12000': -22

这个我也没有搜集到解决方法;

上述全部打开之后dri下还是没有设备,

换arm-linux-gnueabihf-工具链

换上hf的工具链编译,无法启动,替换的编译结果有:

linux-5.14.3

busybox---->rootfs.ext4

libdrm-2.4.112

启动出现kernel panic;还需要替换lib,

cp -par /usr/arm-linux-gnueabihf/lib/* ./lib

启动成功了,但是结果还是一样,看来需要跟踪下代码了,

跟踪drm设备注册接口

感觉之前定位的方向都不对,现在直接跟踪drm_dev_register()这个函数,发现pl111_drv.c中probe调用了,直接加打印,

发现这个地方压根没有打印,看下这个probe有没有进来,全加上,一步步跟,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/156816.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode 111. 二叉树的最小深度

&#x1f308;&#x1f308;&#x1f604;&#x1f604; 欢迎来到茶色岛独家岛屿&#xff0c;本期将为大家揭晓LeetCode 111. 二叉树的最小深度&#xff0c;做好准备了么&#xff0c;那么开始吧。 &#x1f332;&#x1f332;&#x1f434;&#x1f434; 一、题目名称 二、…

程序的编译与链接——ARM可执行文件ELF

读书《嵌入式C语言自我修养》笔记 目录 读书《嵌入式C语言自我修养》笔记 ARM编译工具 使用readelf命令查看ELF Header 使用readelf命令查看ELF section header 程序编译 预处理器 编译器 &#xff08;1&#xff09;词法分析。 &#xff08;2&#xff09;语法分析。 …

班级人员可视化项目

页面分布文件分布index.html(搭建页面)index.css (修饰页面)fonts (放图标)images &#xff08;放图片&#xff09;jsjquery.js &#xff08;调整页面的js&#xff09;flexible.js (尺寸大小的js)echarts.min.js (charts图表的js)chinaMap…

论文投稿指南——中文核心期刊推荐(中国医学 2)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

普元PAS部署springboot项目访问500

背景 项目需要从东方通部署迁移到普元PAS部署。记录一下遇到的问题 问题一 WebSocket启动异常: Error creating bean with name ‘serverEndpoint’ defined in class path resource 因为SpringBoot默认使用的容器是tomcat 对应的Websocket实现 PAS中直接使用ServerEndpoin…

虹科新品丨什么是光纤微动开关?(下)

HK-Micronor光纤微动开关 HK-MR386光纤微动开关和HK-MR380系列控制器搭配使用&#xff0c;提供了一种全新的创新型信号解决方案&#xff0c;可以长距离部署在困难和危险环境中。该开关传感器采用光中断的方法&#xff0c;通过双工62.5/125μm光纤链路&#xff0c;进行可靠的信号…

虹科方案|使用直接连接的阵列创建 SAN

一、引言通过将直连环境转换为共享存储&#xff0c;用户可以体验到物理主机之间或主机与存储之间更快的数据传输&#xff0c;从而使vMotion 实时迁移等 VMware 功能能 够在更短的时间内完成。二、关于VMWARE VSPHEREvSphere 平台是您的应用程序、云和业务 的最佳基础。 vSphere…

C语言_字符串旋转结果_C语言字符串旋转结果

上一篇博文讲了字符串左旋http://t.csdn.cn/8zbRf 这篇文章将讲解判断一个字符串是不是逆序过。 目录 一、问题描述 二、设计与分析 三、代码实现 一、问题描述 写一个函数&#xff0c;判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如&#xff1a;给定s1 AAB…

【零基础】学python数据结构与算法笔记9

文章目录前言53.栈和队列的应用&#xff1a;迷宫问题54.使用栈解决迷宫问题55.使用队列进行迷宫问题&#xff1a;介绍56.使用队列进行迷宫问题&#xff1a;实现&#xff1a;总结前言 学习python数据结构与算法&#xff0c;学习常用的算法&#xff0c; b站学习链接 53.栈和队列…

【学习笔记之Linux】工具之vim配置

配置文件的位置&#xff1a; 在目录/etc/下面有一个名为vimrc的文件&#xff0c;这是系统中公共的vim配置文件&#xff0c;对所有用户都有效&#xff1b;   每个用户可以在自己的主目录下创建一个私有的配置文件&#xff0c;命名为“.vimrc”&#xff0c;这个配置只对自己有效…

如何利用MOS管实现双向电平转换

前面讲过的三极管和MOS管电平转换电路都是单向的&#xff0c;就是信号只能是从A输出到B输入。其实单个MOS管也能实现双向电平转换&#xff0c;即信号即能从A输出到B输入&#xff0c;也能从B输出到A输入。实际电路就是这个&#xff0c;包含一个MOS管和两个电阻&#xff0c;芯片1…

自定义启动器

&#x1f341;博客主页&#xff1a;&#x1f449;不会压弯的小飞侠 ✨欢迎关注&#xff1a;&#x1f449;点赞&#x1f44d;收藏⭐留言✒ ✨系列专栏&#xff1a;&#x1f449;SpringBoot专栏 &#x1f525;欢迎大佬指正&#xff0c;一起学习&#xff01;一起加油&#xff01; …

D. Meta-set(组合数学)

Problem - D - Codeforces 你喜欢纸牌棋盘游戏“集合”。每张牌包含k个特征&#xff0c;每个特征都等于集合{0,1,2}中的一个值。这副牌包含所有可能的纸牌变体&#xff0c;也就是说&#xff0c;总共有3k张不同的纸牌。 如果三张牌的某个特征与这三张牌相同或两两不同&#xff0…

[LeetCode算法->双指针]

在算法中&#xff0c;双指针的问题较为常见&#xff0c;应用也比较广泛&#xff0c;双指针问题能够降低时间复杂度和空间复杂度&#xff0c;有必要掌握这一内容。下面通过LeetCode的题目来说明双指针。1.给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的…

Minecraft 1.19.2 Fabric模组开发 03.动画生物实体

我们本次尝试在1.19.2 Fabric中添加一个能够具有各种动画效果动作的生物实体。 效果展示效果展示效果展示 1.首先&#xff0c;为了实现这些动画效果&#xff0c;我们需要首先使用到一个模组:geckolib(下载地址) 找到项目的build.gradle文件&#xff0c;在repositories和depen…

vue实现网页端企业微信扫码登录功能(前端部分)

时至今日&#xff0c;企业微信在企业日常工作中的使用越来越频繁也越来越重要&#xff0c;不少企业已使用企业微信进行着日常的工作安排管理。在这种背景下&#xff0c;各类系统和企业微信对接的需求也不断增加&#xff0c;今天要说的就是一个比较常见的需求&#xff1a;在网页…

第08讲:Docker中的网络类型bridge和host

Docker 中的网络模式早先是 3 种&#xff0c;后来又加了 1 种&#xff0c;一共是 4 种。这里&#xff0c;我们只涉及、介绍使用其中 2 种网络模式&#xff1a;bridge 模式和 host 模式。 bridge 是驱动&#xff08; Driver &#xff09;类型为 bridge 的默认网络&#xff1b;h…

『 MySQL篇 』:库操作、数据类型

目录 目录 一、初识数据库 数据库 数据库管理系统 SQL语言 二、详解MySQL MySQL 存储引擎 三、简单的库操作 设置数据库的编码字符集 创建数据库 显示数据库 使用数据库 删除数据库 四、MySQL数据类型 数值类型 字符串类型 日期类型 一、初识数据库 学习 MyS…

SpringBoot整合ELK教程

SpringBoot整合ELK教程 1 基础概念 ELK 即 Elasticsearch、Logstash、Kibana&#xff0c;组合起来可以搭建线上日志系统&#xff0c;本文主要讲解使用 ELK 来收集测试框架产生的日志。 Elasticsearch&#xff1a;用于存储收集到的日志信息&#xff1b;Logstash&#xff1a;用于…

如何成为优秀合格的管理者之角色定位

目录 导语 一、管理者的角色误区和角色定位 &#xff08;一&#xff09;管理者对上级 &#xff08;二&#xff09;管理者对下属 *如何要做好“老师”的角色&#xff1f; &#xff08;三&#xff09;管理者跨部门协作 &#xff08;四&#xff09;管理者对自己 二…