我ldd用来在Fedora/x86上显示动态库,每次使用它时都会显示不同的结果.
这是预期的吗?还是有解释?
我记得它在PPC/Linux上显示了固定的结果.
`ldd /bin/ls
linux-gate.so.1 => (0x00e5b000)
librt.so.1 => /lib/librt.so.1 (0x00c0c000)
libselinux.so.1 => /lib/libselinux.so.1 (0x0095d000)
libcap.so.2 => /lib/libcap.so.2 (0x00110000)
libacl.so.1 => /lib/libacl.so.1 (0x00331000)
libc.so.6 => /lib/libc.so.6 (0x00115000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00bc9000)
/lib/ld-linux.so.2 (0x009d2000)
libdl.so.2 => /lib/libdl.so.2 (0x00680000)
libattr.so.1 => /lib/libattr.so.1 (0x00447000)
ldd /bin/ls
linux-gate.so.1 => (0x00f76000)
librt.so.1 => /lib/librt.so.1 (0x00494000)
libselinux.so.1 => /lib/libselinux.so.1 (0x0095d000)
libcap.so.2 => /lib/libcap.so.2 (0x009e9000)
libacl.so.1 => /lib/libacl.so.1 (0x00365000)
libc.so.6 => /lib/libc.so.6 (0x00732000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00b61000)
/lib/ld-linux.so.2 (0x002a7000)
libdl.so.2 => /lib/libdl.so.2 (0x002f0000)
libattr.so.1 …Run Code Online (Sandbox Code Playgroud) 现在我将咆哮通知支持添加到我的应用程序中,当我将其提交给带有组织者的mac app store时,它说"不支持的体系结构 - 应用程序可执行文件可能支持其中一个或两个英特尔体系结构:
i386(32位)x86_64(64位)"最后我发现它的问题是由growl库,所以我需要在growl中删除ppc部分,所以,如何?请帮助..
在GCC中使用头文件中定义的C++方法,是否可以使用属性语法?请有人为我提供一个例子.以下代码不起作用:
class foo
{
public:
void my_func() __attribute__((hot));
void my_func()
{
// Some stuff
}
};
Run Code Online (Sandbox Code Playgroud)
看起来你必须把属性放在声明中,而不是放在函数的定义中.在头文件中定义方法/函数时,您没有单独的声明.
另外如何在模板中使用它.例如,以下代码无法使用'错误进行编译:函数定义中不允许使用属性'.
/// Template version of max for type T
template <typename T>
inline T max(const T x, const T y) __attribute((const))
{
if (x > y)
return x;
else
return y;
}
Run Code Online (Sandbox Code Playgroud) 我正在使用u-boot开发嵌入式Linux系统.U-boot使用console = bootarg设置ttyS0串口的波特率,但我还想设置ttyS [1-3]的默认波特率(不是9600).
在这个系统中,U-boot将设备树(dts/dtb)传递给内核,但设置那里的波特率似乎不起作用.
需要注意的是,该系统类似于峡谷地板(ppc460ex).
无论如何在u-boot,内核或设备树中是否有更改串口的默认波特率?
我正在尝试使用R版本3.1.1在PowerPC中安装devtools,但最后因为卷曲库而失败:
...
** testing if installed package can be loaded Error in dyn.load(file, DLLpath = DLLpath, ...) : unable to load shared object '/path
to/R/powerpc-unknown-linux-gnu-library/3.1/curl/libs/curl.so': /path
to/R/powerpc-unknown-linux-gnu-library/3.1/curl/libs/curl.so:
undefined symbol: BSWAP_32 Error: loading failed Execution halted
ERROR: loading failed
* removing ‘/path to/R/powerpc-unknown-linux-gnu-library/3.1/curl’ ERROR: dependency ‘curl’ is not available for package ‘httr’
* removing ‘/path to/R/powerpc-unknown-linux-gnu-library/3.1/httr’ ERROR: dependency ‘curl’ is not available for package ‘rversions’
* removing ‘/path to/R/powerpc-unknown-linux-gnu-library/3.1/rversions’ ERROR:
dependencies ‘httr’, ‘rversions’ are not available for package
‘devtools’
* removing …Run Code Online (Sandbox Code Playgroud) 我一直在努力学习嵌入式软件开发已有一段时间了(已经做了近15年的软件,10年用Java编写,还有大学的C/C++/X86 Asm知识.)开始玩基于PIC的评估板踢.
在我工作的地方,有一个部门.他们不时在嵌入式系统上有一些空缺.他们寻求的一件事就是使用PowerPC架构.
我已经查看了使用PowerPC芯片的廉价评估板的interweebz,但我发现所有的板都在400美元到1000美元之间.我想知道是否有一种廉价的方法可以在PowerPC架构上学习嵌入式系统,因为我已经看到其他架构的评估板价格在这个价格范围的一小部分.
或者,如果是一个评估.无法以合理的价格提供电路板,至少是在PowerPC汇编中练习编程的廉价平台(即使它没有嵌入).
有人可以提出一些建议吗?
哦,如果你能推荐一些关于PowerPC架构和编程的书籍,那也很棒.
我目前正在尝试构建一个配置来测试Big-Endian系统上的一些代码.
通过聊天和研究,我一直相信这些测试的一个好目标是PowerPC架构.由于我没有自己的,并且不希望很快就能直接访问,我正在寻找某种仿真软件来测试我的代码.
问题是,我发现在这方面没有"易于使用"的解决方案.
似乎至少有两种可能的解决方案,一种使用QEMU,另一种使用PearPC.它们都不容易部署.
我看到它的方式:
我想要像部署VMWare虚拟机一样简单,只需一个简单的ghost VM即可使用和下载.
附加信息:我认为PowerPC上的Linux可能是更好的操作系统选择,因为模拟MAC环境可能会破坏许可证.我猜QEMU也比PearPC更新,更受支持.主机系统可以是Windows或Linux.主机CPU必须是x86.
我是PowerPC组装的新手.我正在使用MPC8245(是的,老学校).这是一款603e系列处理器.
我想知道如何创建一个加载立即指令,其中立即16位值是"无符号".
示例:li r3,0xFC10
我正在使用的gcc交叉编译器4.4.5不允许使用该指令,因为该值不是有符号常量.
是的,我可以使用减去2-s补码,但这使得读取和记录代码更加困难.当加载器件寄存器的位域时,在指令中具有精确的位字段更容易阅读.
我希望找到一些帮助,即使这个问题可能是硬件而不是软件相关(我们会看到).我正在开发基于Freescales P1021处理器(ppc,e500v2核心)的定制电路板.外部PCB将连接,可由SPI配置.该外部PCB的规格读取为全双工模式下的2字节命令,并且只有最后一个字节用于在MISO上传输数据.
知道这一点,我目前正在准备一些软件来测试这个设备.所以我从众所周知的spi_test程序开始.
root@p1021rdb:~# ./spi_test -D /dev/spidev32766.3
spi mode: 0
bits per word: 8
max speed: 500000 Hz (500 KHz)
00 00 00 00 00 00
00 00 00 00 00 00
00 00 00 00 00 00
00 00 00 00 00 00
00 00 00 00 00 00
00 00 00 00 00 00
00 00
root@p1021rdb:~#
Run Code Online (Sandbox Code Playgroud)

信号显示608个时钟,似乎上半部分只有数据.我决定用loopback调查和测试它 - 切割MOSI-MISO将数据循环回rx缓冲区.结果:
root@p1021rdb:~# ./spi_test -D /dev/spidev32766.3
spi mode: 0
bits per word: 8
max speed: 500000 Hz (500 …Run Code Online (Sandbox Code Playgroud) 我正在编写C代码并为PowerPC架构编译它.该C代码包含浮点变量常量,我希望将其放在该.text部分中,而不是.rodata功能代码是自包含的.
这个问题在于PowerPC,将浮点值移动到浮点寄存器的唯一方法是从内存加载它.这是一个指令集限制.
为了说服GCC帮助我,我尝试将浮标声明为static const.没有不同.使用指针,结果相同.使用__attribute__((section(".text")))该功能,相同的结果和每个浮点变量分别:
error: myFloatConstant causes a section type conflict with myFunction
Run Code Online (Sandbox Code Playgroud)
我也试过通过#pragma GCC push_options
#pragma GCC optimize("O0")和禁用优化#pragma GCC pop_options.再假装我有一个unsigned int工作:
unsigned int *myFloatConstant = (unsigned int *) (0x11000018);
*myFloatConstant = 0x4C000000;
Run Code Online (Sandbox Code Playgroud)
使用浮点数:
float theActualFloat = *(float *) myFloatConstant;
Run Code Online (Sandbox Code Playgroud)
我仍然想保留,-O3但它再次使用,.rodata所以一个潜在的答案将包括哪个优化标志导致浮动被放置,.rodata因为从这开始-O1发生?
最好的情况是我可以在代码中"正常"使用浮点数加上最大优化,但它们根本就不会被放置.rodata.
我想象 …