Android 尝试构建Nexus 6内核时出错:赋值从整数生成指针,无需转换[-Wint转换]
我正试图为我的Nexus6(shamu)(棉花糖)构建一个如下()的内核。当我键入“sudo make”时,我得到以下错误:Android 尝试构建Nexus 6内核时出错:赋值从整数生成指针,无需转换[-Wint转换],android,c,linux,Android,C,Linux,我正试图为我的Nexus6(shamu)(棉花糖)构建一个如下()的内核。当我键入“sudo make”时,我得到以下错误: arch/x86/kernel/pci-dma.c: In function ‘dma_generic_alloc_coherent’: arch/x86/kernel/pci-dma.c:105:8: warning: assignment makes pointer from integer without a cast [-Wint-conversion] erro
arch/x86/kernel/pci-dma.c: In function ‘dma_generic_alloc_coherent’:
arch/x86/kernel/pci-dma.c:105:8: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
error, forbidden warning: pci-dma.c:105
scripts/Makefile.build:308: fallo en las instrucciones para el objetivo 'arch/x86/kernel/pci-dma.o'
make[2]: *** [arch/x86/kernel/pci-dma.o] Error 1
scripts/Makefile.build:455: fallo en las instrucciones para el objetivo 'arch/x86/kernel'
make[1]: *** [arch/x86/kernel] Error 2
Makefile:799: fallo en las instrucciones para el objetivo 'arch/x86'
make: *** [arch/x86] Error 2
我没有写那个文件,所以我不知道是什么原因导致了错误,文件的那部分是错误的
void *dma_generic_alloc_coherent(struct device *dev, size_t size,
dma_addr_t *dma_addr, gfp_t flag,
struct dma_attrs *attrs)
{
unsigned long dma_mask;
struct page *page;
unsigned int count = PAGE_ALIGN(size) >> PAGE_SHIFT;
dma_addr_t addr;
dma_mask = dma_alloc_coherent_mask(dev, flag);
flag |= __GFP_ZERO;
again:
page = NULL;
/* CMA can be used only in the context which permits sleeping */
if (flag & __GFP_WAIT)
page = dma_alloc_from_contiguous(dev, count, get_order(size));
/* fallback */
if (!page)
page = alloc_pages_node(dev_to_node(dev), flag, get_order(size));
if (!page)
return NULL;
addr = page_to_phys(page);
if (addr + size > dma_mask) {
__free_pages(page, get_order(size));
if (dma_mask < DMA_BIT_MASK(32) && !(flag & GFP_DMA)) {
flag = (flag & ~GFP_DMA32) | GFP_DMA;
goto again;
}
return NULL;
}
*dma_addr = addr;
return page_address(page);
}
如何解决这个问题?您确定要构建x86内核吗?Felix,我不知道,我正在按照指南进行操作,是否应该更改编译器?如何操作?我假设Nexus6是一个
arm
设备,但您显示的消息表明x86
的代码已编译,因此您可能使用主机的普通C编译器创建x86
代码。您需要一个针对您的设备的交叉编译器,例如@FelixPalmen您是对的,谢谢!
page = dma_alloc_from_contiguous(dev, count, get_order(size));