这是我的情况.我已经按照关于将网站移动到另一台服务器的wordpress codex页面上的确切说明进行操作.这是我采取的步骤.
然后,当我尝试在新位置打开我的网站时,它只是将我引导到wp-admin/install.php现在只是为了使场景更清晰:目标文件夹(在实时服务器上)是public_html文件夹中的子directori.已经有另一个wordpress安装在里面(我说这是为了万一它应该重要)
我的.htaccess看起来像这样
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /subDirectoryName/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /subDirectoryName/index.php [L]
</IfModule>
# END WordPress
Run Code Online (Sandbox Code Playgroud)
我已经尝试通过phpMyadmin检查和修复我的表,但一切似乎都没问题,对问题没有影响.
我还尝试清空实时服务器上的数据库并完成安装.它安装没有问题,一切正常,但是,我没有用于另一个干净的安装.但我认为这至少排除了wp-config文件的任何问题.我正在使用Wordpress版本3.3.1
所以我想我留下的一个重要问题是: 为什么wordpress在迁移后没有识别我的Install?
任何帮助非常感谢!
当我尝试在64位FreeBSD中编译C应用程序时出现以下错误:
在制作共享对象时不能使用重定位R_X86_64_32S; 用-fPIC重新编译
什么是R_X86_64_32S
搬迁,什么是R_X86_64_64
?
我已经用Google搜索了错误,这可能是原因 - 如果有人能说出R_X86_64_32S的真正意义,那就太好了.
64位Linux默认使用小内存模型,它将所有代码和静态数据置于2GB地址限制之下.这可确保您可以使用32位绝对地址.较旧版本的gcc使用静态数组的32位绝对地址,以便为相对地址计算保存额外的指令.但是,这不再有效.如果我尝试在汇编中创建一个32位的绝对地址,我会收到链接器错误:"在创建共享对象时,不能使用".data"重定位R_X86_64_32S;使用-fPIC重新编译".当然,此错误消息具有误导性,因为我没有创建共享对象,-fPIC也没有帮助.到目前为止我发现的是:gcc版本4.8.5对静态数组使用32位绝对地址,gcc版本6.3.0不使用.版本5可能也没有.binutils 2.24中的链接器允许32位绝对地址,而2.28则不允许.
这种变化的后果是必须重新编译旧库并破坏传统汇编代码.
现在我想问一下:这个改变是什么时候做的?它在某处记录了吗?是否有一个链接器选项,使其接受32位绝对地址?
我正在尝试将一个工作副本文件夹从它的旧专用svn服务器移动到一个新的svn服务器,它包含在一个子文件夹中.使用以下重定位命令:
svn switch --relocate https://oldserver/svn/repos https://newserver/some/directory
Run Code Online (Sandbox Code Playgroud)
我明白了:
svn: 'https://newserver/some/directory ' is not the root of the repository
Run Code Online (Sandbox Code Playgroud)
这是正确的.....但是,错误,我如何移动位置无论如何?
TL; DR
我试图将这个问题作为一个简短的问题,但这是一个复杂的问题所以它最终会变长.如果您可以回答这方面的任何部分或提供任何建议或提示或资源或任何内容,那将非常有帮助(即使您没有直接解决我的所有问题).我现在正撞在墙上.:)
以下是我遇到的具体问题.请阅读下面的更多信息.
到目前为止我的方法
我正在尝试以特定的[未记录的]专有格式创建一个重定位文件,该格式主要基于ELF.我编写了一个工具,它接受一个ELF文件和一个部分链接文件(PLF)并处理它们以输出完全解析的rel文件.此rel文件用于根据需要加载/卸载数据以节省内存.该平台是一个32位PPC.一个问题是该工具是用c#编写的,但数据是针对PPC的,因此需要注意有趣的endian问题等.
我一直试图了解在用于解析未解析的符号等时如何处理重定位.到目前为止我所做的是从PLF复制相关部分,然后对于每个相应的.rela部分,我解析条目并尝试修复部分数据并根据需要生成新的重定位条目.但这就是我的困难所在.我离开了我的元素,这种事情似乎通常是由链接器和加载器完成的,所以没有很多好的例子可以借鉴.但是我发现了一些有帮助的东西,包括这一个.
所以发生的事情是:
我这样做的全部原因是因为有一个旧的过时不支持的工具不支持使用自定义部分,这是该项目的关键要求(出于内存原因).我们有一个自定义部分,其中包含一堆我们想要在启动后卸载的初始化代码(总计大约一兆).现有工具只是忽略该部分中的所有数据.
因此,虽然制作支持自定义部分的自己的工具是理想的,但如果有任何明智的想法以实现这一目标的另一种方式,我全都耳朵!我们已经提出了将.dtor部分用于我们的数据的想法,因为它几乎是空的.但这很麻烦,如果它阻止干净关闭,可能无论如何都无法工作.
重定位加示例代码
当我处理搬迁,我工作过的公式和信息在ABI文档中发现的HERE(约4.13节,第80ish),以及一些我已经挖出了其他代码示例和博客文章.但是这一切都让人感到困惑,并没有真正拼写出来,而且我发现的所有代码都有所不同.
例如,
所以,当我看到这种代码时,我该如何解读呢?
这是一个例子(来自这个来源)
case ELF::R_PPC64_ADDR14 : {
assert(((Value + Addend) & 3) == 0); …
Run Code Online (Sandbox Code Playgroud) 这可能听起来像一个愚蠢的问题,但我不能为我的生活找到这个问题的答案.
我们在Redmine中设置了一个项目并链接到SVN存储库.一切都运行正常,但我们最近做了一个存储库重定位,我们需要更新其Redmine存储库路径设置以指向新的存储库.
问题是该选项显示为灰色,我无法更改它.我想你可以点击"删除"并创建一个新的,但是这个选项听起来真的很可怕(URL里面有///中的单词!!)我不想消灭回购.在Redmine手册中没有我能找到的参考资料.我该怎么办?
另外 - 与此相关 - 你知道旧提交中的所有票证引用是否仍然指向正确的位置?
我是装配新手,因此想要了解更多关于搬迁的概念.
如果有人可以用初学者级别的例子来解释,那将会很棒.
考虑 Linux 系统上的以下两个文件:
使用消息.cpp
#include <iostream>
extern const char* message;
void print_message();
int main() {
std::cout << message << '\n';
print_message();
}
Run Code Online (Sandbox Code Playgroud)
libmessage.cpp
#include <iostream>
const char* message = "Meow!"; // 1. absolute address of string literal
// needs runtime relocation in a .so
void print_message() {
std::cout << message << '\n';
}
Run Code Online (Sandbox Code Playgroud)
我们可以将use_message.cpp编译为目标文件,将libmessage.cpp编译为共享库,并将它们链接在一起,如下所示:
$ g++ use_message.cpp -c -pie -o use_message.o
$ g++ libmessage.cpp -fPIC -shared -o libmessage.so
$ g++ use_message.o libmessage.so -o use_message
Run Code Online (Sandbox Code Playgroud)
的定义message …
出于好奇,我想知道在执行程序期间是否可以重新定位一段代码.例如,我有一个函数,每次执行后都应该在内存中替换这个函数.我们想到的一个想法是使用自修改代码来做到这一点.根据一些在线资源,自修改代码可以在Linux上执行,但我仍然不确定是否可以进行这样的动态重定位.有人有经验吗?
在学习汇编程序时,我遇到了这些术语.我得到的想法是这样的,在可重定位机器代码中,代码不依赖于静态RAM位置.汇编程序指定我的程序的RAM需求.可以将内存放置在链接器为它们找到空间的任何位置.
这个想法是否正确?如果是这样,汇编程序如何完成?
而且,Absolute Machine Code的一些例子是什么?