我正在使用基于 v5.7.x 内核构建的 Linux 驱动程序,但不是基于最新的 v5.8.x 版本。
总而言之,大部分驱动程序是预先构建的,内核接口是在目标上构建的。这就涉及到一个make -f Kbuild命令。
检查了所有相关的内核接口文件是否有任何会影响我们的更改后,通常驱动程序会照常在新内核上构建。然而,这次我们得到了以下错误:
make[2]: *** [scripts/Makefile.modpost:111: /path/to/source/Module.symvers] Error 1
make[1]: *** [Makefile:1669: modules] Error 2
make[1]: Leaving directory '/usr/src/kernels/5.8.0-1.el8.elrepo.x86_64'
make: *** [Kbuild:26: default] Error 2
Run Code Online (Sandbox Code Playgroud)
这是来自 CentOS 8.1,但在 Ubuntu 20.04 上也出现了同样的错误。
我不是这方面的专家,所以解释这些错误有点困难。我尝试使用 KBUILD_VERBOSE 标志进行构建,但除了到目前为止构建成功之外,它并没有真正提供任何有用的信息。
在以前的内核上,将创建 Module.symvers 文件,但它是空的。在 5.8 上,该文件根本不会创建,可能是由于此错误。因此,不会创建 .ko 文件。
最后,如果我们放入源文件而不是预构建的 .o 文件,构建就会成功。这些 .o 文件是使用非常旧的 GCC 版本 (4.4.7) 构建的,但我们也尝试使用更新的版本 (8.3.1) 构建,与目标计算机的版本相同。
我很感激有关检查事项的建议。让我知道是否还有其他详细信息有帮助。
编辑:
我手动在 Makefile.modpost 上运行 make 并得到以下输出:
sudo make -f ./scripts/Makefile.modpost
WARNING: Symbol version dump "vmlinux.symvers" is missing. …Run Code Online (Sandbox Code Playgroud) 我有一个VSPackage,我希望在调试模式下获取类似于本地窗口中显示的信息(当前上下文的变量值).
我一直在试验DTE.Debugger.CurrentStackFrame实例,它看起来很有趣,因为它暴露了Argument和Local表达式集合.但是,我无法看到将表达式的值作为对象获取的方法 - Value属性似乎只是ToString值.
我正在尝试使用WPF RichTextBox,并注意到我可以通过循环遍历RichTextBox.Document.Blocks来遍历构成其文档的块.
让插入物包围的块的最佳方法是什么?
我可以得到每个块的CaretPosition和ElementStart和ElementEnd属性,但是看不到如何比较它们,因为实际的字符偏移不会暴露,除非我遗漏了一些明显的东西.
我有一些图标是我项目中的资源,我打算将这些图标用于菜单项和其他内容.
我创建了一个常量类来将这些图标的位置保存在一个中心位置,而不是将它们硬编码到每个菜单项等中.
例如
public const string IconName = "/Project;component/Icons/IconName.png";
Run Code Online (Sandbox Code Playgroud)
如果我将此值硬编码到xaml中图像的Source属性中,它可以正常工作.但是,如果我尝试引用此常量,那么它将失败.
例如
<Image Source="{x:Static pb:IconConstants.IconName}" Width="16" Height="16" />
Run Code Online (Sandbox Code Playgroud)
它失败并出现此异常:"无法将属性'Source'中的值转换为'System.Windows.Media.ImageSource'类型的对象."
这和我刚刚硬编码的区别是什么?有没有更好的方法在xaml中引用我的常量?
谢谢,艾伦
我已经使用Heat工具根据我想要安装其内容的文件夹生成wxs文件.这给了我一个像这样的大文件:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="TARGETDIR">
<Directory Id="dir1FC8A0605F7DF8B33E3EECB0A1270FA2" Name="DirectoryName" />
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="ComponentGroupId">
<Component Id="cmp1FB67A60B41F3170889B7E5739A23560" Directory="dir1FC8A0605F7DF8B33E3EECB0A1270FA2" Guid="{2DC3B790-D29C-4090-B4CF-5C27687C6ABE}">
<File Id="filF1E1262E52254B1846C7CB2393126A6F" KeyPath="yes" Source="PathToFile" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>
Run Code Online (Sandbox Code Playgroud)
在我的主要Wix文件Product.wxs中,我有一个引用Heat创建的上述ComponentGroup的功能.该功能看起来像这样:
<Feature Id="FeatureId" Title="FeatureTitle" Level="1" AllowAdvertise="no" Absent="disallow" Description="Feature description.">
<ComponentGroupRef Id="ComponentGroupId" />
</Feature>
Run Code Online (Sandbox Code Playgroud)
这是工作,但是当我运行安装程序,组件组内的文件放在C盘的根目录(即C:\目录名),但我想他们进入程序文件(如C:\ Program Files文件\目录名).
有任何想法吗?
谢谢,艾伦
我试图将一个long long类型作为参数传递给函数并失败.我可以将5000000000分配给long long变量,如下所示:
long long value = 5000000000;
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将该变量传递给方法时:
- (void)viewDidLoad
{
[super viewDidLoad];
long long value = 5000000000;
[self test:value];
}
-(void) test:(long long)value
{
printf("%d\n", value);
}
Run Code Online (Sandbox Code Playgroud)
该值打印为705032704而不是5000000000.我在调试器中验证了这一点.705032704的值是常量,所以看起来似乎发生了某种截断.
我准备用这个把头发拉出来.有人可以帮忙吗?
谢谢,艾伦
我有一个应用程序和它链接的dylib.我的理解是应用程序包应该包含dylib.那是对的吗?
有没有办法在构建时将dylib复制到应用程序包?
谢谢,艾伦
我正在尝试设置一个 pro 文件,如果定义了变量,我希望它仅包含特定的库。我已经通过命令行附加 DEFINES+=VARIABLE_NAME 将该变量传递到 qmake 中。
我可以使用 VARIABLE_NAME 有条件地编译部分代码,但是我可以有一个条件来检测 pro 文件中的 VARIABLE_NAME 并仅包含一个库(如果存在)吗?
谢谢,艾伦
我有几个由 WPF 形状基元组成的常见符号(例如矩形、直线、路径等)。这些符号当前作为用户控件存储在 xaml 文件中。例如:
<Canvas x:Name="Symbol" Width="100" Height="100">
<Rectangle x:Name="Rectangle" Width="100" Height="100" Stretch="Fill">
<Rectangle.Fill>
<SolidColorBrush Color="Aqua"></SolidColorBrush>
</Rectangle.Fill>
</Rectangle>
</Canvas>
Run Code Online (Sandbox Code Playgroud)
上面是一个简单的例子,但我的大多数符号都比较复杂,由许多不同的部分组成。因此,我希望使用这些用户控件来存储符号并使它们易于操作。
我正在 Canvas 的 OnRender 方法中进行大量绘图,并希望在绘图中包含其中一些复合符号。是否可以将它们转换为某种格式以将它们绘制到 DrawingContext?我知道有一个名为 DrawingContext.DrawImage 的方法,但这需要 ImageSource 作为输入。
任何想法将不胜感激。
谢谢,艾伦
我想知道是否可以使用Vista/Windows 7样式设置我的Windows窗体树形样式.如果它在旧版本的Windows中运行,那么我希望使用常规的树视图样式.
这可能是使用清单还是需要更详细的自定义或使用第三方控件?
谢谢,艾伦
我目前有一个ASP .NET MVC站点,有两个指向它的域(例如www.domainA.com和www.domainB.com).即使访问www.domainB.com,我也想更改所有链接以使用www.domainA.com.
我的所有网址都是由内置的Url.Action和Html.ActionLink方法生成的.
我按照上一个问题中的说明进行操作,但我无法完成它.
这是我的自定义路线:
public class MultipleDomainRoute : System.Web.Routing.Route
{
public MultipleDomainRoute(string url, IRouteHandler routeHandler)
: base(url, routeHandler)
{
}
public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
{
VirtualPathData path = new VirtualPathData(this, "http://www.domainA.com/" + values["controller"] + "/" + values["action"]);
return path;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的自定义路由处理程序:
class MyRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return new MvcHandler(requestContext);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的RegisterRoutes方法:
public static void RegisterRoutes(RouteCollection routes)
{
routes.Add(new MultipleDomainRoute("{controller}/{action}/{id}", new MyRouteHandler()));
routes.MapRoute(
"Default", // Route …Run Code Online (Sandbox Code Playgroud) 我在一个项目中使用 AvalonDock。为了这个例子,它的结构如下:
<ad:DockingManager>
<ad:DockablePane>
<ad:DockableContent Title="Test1">
</ad:DockableContent>
<ad:DockableContent Title="Test2">
</ad:DockableContent>
</ad:DockablePane>
</ad:DockingManager>
Run Code Online (Sandbox Code Playgroud)

这很好,但不幸的是,标签在高对比度主题上看起来不太好,如下所示。

理想情况下,我想重新设置选项卡的样式以使用系统颜色作为背景(例如窗口颜色)。这可能吗?
谢谢,艾伦
c# ×6
wpf ×4
.net ×2
c++ ×2
qt ×2
styling ×2
xaml ×2
arguments ×1
asp.net ×1
asp.net-mvc ×1
avalondock ×1
bundle ×1
components ×1
constants ×1
debugging ×1
drawing ×1
driver ×1
dylib ×1
heat ×1
image ×1
iphone ×1
kbuild ×1
linux ×1
linux-kernel ×1
macos ×1
objective-c ×1
path ×1
qmake ×1
richtextbox ×1
treeview ×1
truncation ×1
variables ×1
vspackage ×1
winforms ×1
wix ×1