Articles of 64bit

在存储库查看器的服务器上独立的git二进制文件

我有我的公司的服务器。 在这个服务器上没有安装 git (并且不会在不久的将来) 。 (在许多免费的服务器托pipe网站,git也没有安装) 有没有办法使用git二进制没有安装git(因此没有在另一个文件夹中需要的依赖关系,独立)? 另一台服务器是不适合我的。 我想要一个web git仓库查看器的git,这当然需要在任何文件夹中工作的git二进制文件,也许有一个集成git二进制文件的web git仓库查看器。 我试过了: 服务器的操作系统是Linux 64位。 我已经从本地linux的git二进制文件复制到服务器上的可执行文件path。 它不起作用。 所以我查找依赖关系。 这些库是需要的: libz.so.1 libresolv.so.2 libpthread.so.0 libpcre.so.3 libc.so.6的 它们只是指向图书馆的链接: libz.so.1.2.7 libresolv-2.17.so libpthread-2.17.so libpcre.so.3.13.1 libc-2.17.so 所以我重命名了这些库并将它们复制到git二进制文件所在的服务器上。 但不幸的是,git二进制文件在库文件的/ lib / linux-64-gnu … os文件夹中,而不是在同一个文件夹中。 我不知道接下来要做什么。

警告:format'%llx'需要types为'long long unsigned int *'的参数,但参数3的types为'off64_t *'

当我在Linux x64下编译我的代码(在x86下没有警告),我得到以下警告warning: format '%llx' expects argument of type 'long long unsigned int *', but argument 3 has type 'off64_t *' [-Wformat] 我的代码片段: if(maps && mem != -1) { char buf[BUFSIZ + 1]; while(fgets(buf, BUFSIZ, maps)) { off64_t start, end; sscanf(buf, "%llx-%llx", &start, &end); dump_region(mem, start, end); } } 我该如何施展才能不受警告? 编辑: 我应该像这样吗? sscanf(buf, "%llx-%llx", (long long […]

JACK midi事件在64位机器上丢失

我有一个在Linux下使用JACK MIDI的应用程序。 它可以在32位机器上完美工作,但在我的新机器上,这是64位,我总是遇到事件丢失。 我检查了: 值来自jack_ringbuffer_read ,它们都是OK(有效的2-3个字节的MIDI信息); midi_out_port和client ,他们都OK(非空),并出现在我的JACK端口列表; 以下是部分代码: #define MidiMessageSize 3 jack_client_t* client; jack_port_t* midi_out_port; char current_message[MidiMessageSize]; jack_ringbuffer_t* midi_rb; int process (jack_nframes_t nframes, void *arg) { void* output_buffer = jack_port_get_buffer(midi_out_port, nframes); jack_midi_clear_buffer(output_buffer); int read_space = jack_ringbuffer_read_space(midi_rb); if (read_space == 0) return 0; int i; for (i = 0; i < read_space; i += MidiMessageSize) […]

虚拟服务器/ EC2上的32位和64位操作系统

有没有任何理由select一个在Amazon EC2上的32位debian实例的64位debian? 64位应用程序只需要更多的内存(这是至关重要的,并在VPS和云服务器中有很高的溢价)。 在做出这个select时,我还需要考虑其他事情吗?

在Linux中操作u64types

在Linux内核中如何操作u64型的32位高位和32位低位。 我试过这个,但编译器报告了很多警告。 #define HI_BYTES(_a) (_a & 0xffffffff00000000) #define LO_BYTES(_a) (_a & 0x00000000ffffffff) /* _v is 32 bit value */ #define HI_BYTES_SET(_a, _v) do {_a = (_a & 0x00000000ffffffff) | (_v << 32)} while (0) #define LO_BYTES_SET(_a, _v) do {_a = (_a & 0xffffffff00000000) | (_v)} while (0) 任何build议表示赞赏。 非常感谢!

x86 64位额外的寄存器

我写了我自己的setjmp / longjmp ,它符合我的需求,如下所示。 我在32位系统上testing过,效果很好。 我保存并恢复寄存器eax,ebx,ecx,edi,esi,esp,ebp和eip。 但是,我知道,这对64位系统来说是不够的。 首先,我想我需要用rXreplace寄存器eX。 其次,我想我需要保存在x86-64位,这是r8,r9,r10,r11,r12,r13,r14,r15的8个额外的寄存器。 这足够了,还是我需要做更多? #define MY_SETJMP(n) __asm__ __volatile__ ("movl %eax, regax"#n";" \ "movl %ebx, regbx"#n";" \ "movl %ecx, regcx"#n";" \ "movl %edi, regdi"#n";" \ "movl %esi, regsi"#n";" \ "movl %esp, regsp"#n";" \ "movl %ebp, regbp"#n";" \ "call next"#n";" \ "next"#n": pop regip"#n";" \ "addl $6, regip"#n";" \ ) #define […]

当我尝试在Linux上使用64位perl的DBD :: Advantage时,为什么会出现“Error 6060”?

我意识到我试图超越manf发布的Perl驱动程序的“支持”行为,毕竟他们只是用x86 .so的包发布它。 但是,由于我不能在RHEL 5.4 x86_64机箱上使用x64 Perl的包,并且为这个包保留了x86 Perl的单独安装,所以我试图让这只小狗工作,这要归功于发布的64位.so伴随着Advantage的其他驱动程序包。 我为此做了什么: 下载beta 10 DBI驱动程序,32 下载beta 10 PHP扩展(它包含32和x86_64) 将所需的DLL复制到ads-lib位置(例如/ usr / local / ads / lib64) 使用lib64的.so的path编译Perl DBI驱动程序 编译好,安装好,使用好。 问题是我总是得到: 失败:[iAnywhere Solutions] [Advantage SQL] [ASA]错误6060:Advantage数据库服务器在指定的服务器上不可用。 axServerConnect(SQL-HY000)(DBD:db_login / SQLConnect err = -1) 有没有人有任何想法? 编辑:固定包名称在post标题编辑:更新的标题。 看起来,它不仅仅是x64 perl,而是RHEL 5.4,它可能会干扰。 正如下面所说的,我设法将一个x86 perl引导到系统上,编译DBD :: Advantage 9.99,之后用9.10replace,而且这些x86都不会连接。 无论是哪种库(9.99或9.10),都将从此x86_64服务器连接到Windows服务器的UNCpath。 我已经成功挂载了这个份额没有问题,但我似乎无法连接到9.1。 我已经尝试了:\ hostname \ PATH \ FQDN […]

在Windows上,wso2 esb部署失败

我在Windows 7 x64上使用WSO2 ESB 4.8.1和JDK 1.7.0_67 x64。 我正在使用任何方法部署碳应用程序(.car): maven车部署插件 networkingpipe理控制台 CarbonAppUploadernetworking服务 首次部署成功,但日志文件包含: CarbonAppUploader temp file: C:\Java\WSO2ES~1.1\bin\..\tmp\carbonappsuploads\first-esb_1.0.0.car deletion failed, scheduled deletion on server exit. 同一车(名称和版本)的第二次部署失败,在日志中出现exception(请参见下文) 我道歉本地化的错误消息,但通常它说不能覆盖这个文件。 如果你检查,它实际上被locking删除。 看起来像CarbonAppUploader类没有正确closuresInputStream。 奇怪的是,这个bug在unix(centos)中是不可重现的 问题到WSO2:你打算解决这个问题吗? 对所有人的问题:你遇到过这样的错误,你是如何解决的? exception堆栈跟踪(部分) TID: [0] [ESB] [2014-08-18 22:04:58,254] ERROR {org.wso2.carbon.application.upload.CarbonAppUploader} – Error occurred while uploading Carbon App artifacts {org.wso2.carbon.application.upload.CarbonAppUploader} java.io.FileNotFoundException: C:\Java\WSO2ES~1.1\bin\..\tmp\carbonappsuploads\first-esb_1.0.0.car (Запрошенную операцию нельзя выполнить для файла […]

检测一个32位进程是否在Linux下的64位环境中运行

我正在分发一个32位版本的软件。 我想在运行时检测它所运行的用户级是64位,并且能够运行64位可执行二进制文件(ELF 64位x86-64)。 这与在编译时检测一个体系结构是32位还是64位不是一回事。 我会理想喜欢以最便携的方式做到这一点,所以宁愿避免做file $(which init) | grep x86-64 file $(which init) | grep x86-64这取决于 我不认为阅读cpuid是一个解决scheme – 有可能有一个64位CPU上运行的32位操作系统。 检测64位cpu在长模式下运行似乎也不是一个解决scheme,也没有检测内核本身是否是64位,因为有可能是操作系统是一个64位内核的32位用户用户(可能与一些Debianconfiguration )。 我主要不想检测32和64以外的位数。 我能想到的一个可能的强大的解决scheme是实际包含并试图调用一个64位的ELF二进制文件,看它是否运行,但是这不是一个非常有效的方法。 有没有一个Linux的function,或者在stl或boost,可以帮助我find可靠的? 具有讽刺意味的是,一旦在Windows下解决等价的问题是非常容易的 。

int 0x80是否覆盖寄存器值?

我写了一个程序,它应该像while循环一样,打印一定数量的文本string。 这里是代码: global _start section .data msg db "Hello World!",10 ; define the message msgl equ $ – msg ; define message length ; use minimal size of storage space imax dd 0x00001000 ; defines imax to be big! section .text _start: mov r8, 0x10 ; <s> put imax in r8d, this will be our […]