El sistema uos-20sp1 Loongson compila la versión 51 del navegador Firefox, la compañía no es compatible después del complemento npapi versión 52

2020-04-22 13:48:14

El sistema regular de Loongson necesita las siguientes dependencias como referencia

1. Descargue el código fuente del sitio web oficial de Loongson: git clone  git: //cgit.loongnix.org/browser/mozilla-esr52.git

2. 安装 以下 编译 依赖 库 yum install zbar-gtk-devel dbus-devel dbug-glib-devel bzip zip hunspell alsa-lib-devel wireless-tools-devel libXt-devel mesa-libGL-devel startup-notification-devel openssl openssl -desarrollar pulseaudio-libs pulseaudio-libs-devel pulseaudio-libs-glib2 pulseaudio libevent-devel libcurl-devel autoconf213 gstreamer-devel gstreamer gstreamer-plugins-base gstreamer-plugins-base-devel

3. Compile en el directorio de Firefox: autoconf-2.13 ./mach configure; ./mach build

Si el siguiente comando informa un error y no se puede reproducir manualmente, puede ser un problema de codificación.

El código fuente se compila en uos. Se recomienda utilizar un mejor editor de documentos para ver

El autor está utilizando qt creator en la tienda de aplicaciones. Puede instalar y abrir un nuevo proyecto con la línea de comando e importar el proyecto existente para ver el archivo como editor.

 

 Los pasos de instalación son los siguientes:

载火狐浏览器源码

wget  https://ftp.mozilla.org/pub/firefox/releases/51.0/source/firefox-51.0.source.tar.xz
不要用归档管理器解压 uz -d firefox-51.0.source.tar.xz (为什么这个破系统太卡有时会直接卡死) 进入文件夹没有权限添加权限 
chmod 755  ./

 

 
  

Compilar comando:

Habrá un montón de errores al compilar el comando. A la mayoría de ellos les faltan paquetes dependientes 

make -f client.mk build

 

Las diferentes versiones del sistema requieren diferentes dependencias, los amigos pueden instalar las siguientes dependencias según el error,

Las dependencias del autor son las siguientes:

apt-get install g ++ g ++ es un compilador de c ++ que también puede instalar build-essential (paquete de compilación de recopilación) Lo siguiente le pedirá que instale 
apt
- get install libgtk- 3 -dev libgtk2 al instalar el controlador alsa, 0 - dev Instale esto con precaución, Si hay un problema, no habrá interfaz para verificar si la instalación se realizó correctamente desde el sistema recién instalado pkg -config --modversion gtk + -3.0 apt - get install libgconf2- dev apt - get install libdbus-glib- 1 - dev apt - get install libncurses-dev

 

Compilación de autoconf .: 
Wget http: // ftp.gnu.org/gnu/autoconf/autoconf-2.13.tar.gz 
alquitrán -xvzf autoconf- 2.13 .tar.gz 
cd autoconf - 2.13 / 
. / --Program el configure-sufijo = 2.13          -program- = sufijo sufijo sufijo será añadido para especificar el nombre del instalador. 
al hacer 
la composición de la instalación

 

El autor de la compilación de alsa se refiere a  https://zhidao.baidu.com/question/1988026317702934907.html

Antes de instalar el controlador alsa, primero debe instalar los componentes de herramienta necesarios para compilar el núcleo, de la siguiente manera: # / etc / init.d / alsa- utils stop Apague la tarjeta de sonido


Se recomienda descargar primero el paquete de compilación e instalar el pan 
si no hay dependencia. #Apt - get install build-essential ncurses- dev gettext xmlto 
#apt - get   install linux-headers-`uname -r` libncursesw5- dev 

apt - get install libpulse- dev 

apt - get install libxt- dev 

wget ftp: // ftp.alsa-project.org/pub/lib/alsa-lib-1.2.2.tar.bz2 

#wget ftp: // ftp.alsa-project.org/pub /utils/alsa-utils-1.2.2.tar.bz2 no necesita ser compilado y registrado
#wget ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.25.tar.bz2 No es necesario compilar y grabar

toma xjf
alsa-lib-1.2.2.tar.bz2 

Ingrese cada carpeta para compilar la trilogía. / configure make make install

alsa
-driver- 1.0 . 25 .tar.bz2 Este archivo puede ser compilado con problemas.

alsa -driver- 1.0 . 25 .tar.bz2 El autor no pudo compilar al final e informó que hay un controlador incorporado. El autor no está dispuesto a desinstalar el controlador original, y puede haber problemas con la reinstalación de la tarjeta de sonido.
El autor no compiló con éxito y compiló con éxito este paso

 

Resolver el error:

 error: 'CarrySet' no es miembro de 'js :: jit :: Assembler'
             masm.branchAdd32 (Assembler :: CarrySet, ......  

valor de 11 Carryset' es una enumeración se define en MacroAssembler- JS / src / JIT / ninguno / none.h carril   
función de borrado. masm.branchAdd32 (Assembler :: CarrySet, ...... No tengo forma de resolverlo, solo bórrelo. Si un amigo lo resuelve, por favor deme un comentario. Gracias.

 

Sin MAsmJSLoadHeap, MAsmJSStoreHeap clase mir-   > barreraAfter () mir-> barreraBefore () mir-> isAtomicAccess () mir-> needsBoundsCheck ()   error de función js / src / jit / MIR.h Reemplace las siguientes 2 clases Consulte MWasmMemoryAccess

clase MAsmJSLoadHeap 
  : pública MUnaryInstruction,
     pública MAsmJSMemoryAccess,
     pública NoTypePolicy :: Datos 
{ 
    MAsmJSLoadHeap (MDefinition * de base , Scalar :: Tipo accessType, MemoryBarrierBits barrierBefore = MembarNobits, 
                   MemoryBarrierBits barrierAfter = MembarNobits) 
      : MUnaryInstruction ( de base ), 
        MAsmJSMemoryAccess (accessType), 
      barrierBefore_ ( barrera antes), 
      barrera después_ (barrera después) 
  // MAsmJSLoadHeap (MDefinition * base, Scalar :: Type accessType) //todo yuanban
     // : MUnaryInstruction (base),
      // MAsmJSMemoryAccess (accessType) 
    { 
        setResultType (ScalarTypeToMIRType (accessType)); 
    } 

  public : 

    INSTRUCTION_HEADER (AsmJSLoadHeap) 
    TRIVIAL_NEW_WRAPPERS 

    MDefinition * base () const { return getOperand ( 0 ); }
     void replaceBase (MDefinition * newBase) {replaceOperand ( 0 , newBase); } 

    bool congruentTo ( const MDefinition * ins) const  override ;
    AliasSet getAliasSet () const  override {
         return AliasSet :: Load (AliasSet :: AsmJSHeap); 
    } 
    AliasType mightAlias ​​( const MDefinition * def) const  override ;
    //   todo 
    MemoryBarrierBits barreraBefore_; 
    MemoryBarrierBits barreraAfter_; 
    MemoryBarrierBits barreraBefore () const { return barrerasBefore_; } 
    MemoryBarrierBits barreraAfter () const { return barreraAfter_; }
     bool isAtomicAccess () const { return(barrera antes_ | barrera después_)! = MembarNobits; } 
}; 

clase MAsmJSStoreHeap 
  : pública MBinaryInstruction,
     pública MAsmJSMemoryAccess,
     pública NoTypePolicy :: Datos 
{ 
    MAsmJSStoreHeap (MDefinition * de base , Scalar :: Tipo accessType, MDefinition * v, MemoryBarrierBits barrierBefore = MembarNobits, 
                    MemoryBarrierBits barrierAfter = MembarNobits) 
      : MBinaryInstruction ( de base , v), 
        MAsmJSMemoryAccess (accessType),  
        barrera antes_ (barrera antes),
        barreraAfter_ (barreraAfter) 
    {} 

  público: 
    INSTRUCTION_HEADER (AsmJSStoreHeap) 
    TRIVIAL_NEW_WRAPPERS 

    MDefinition * base () const { return getOperand ( 0 ); }
     void replaceBase (MDefinition * newBase) {replaceOperand ( 0 , newBase); } 
    MDefinition * value () const { return getOperand ( 1 ); } 

    AliasSet getAliasSet () const  override {
         return AliasSet :: Store (AliasSet :: AsmJSHeap); 
    } 
    //   todo 
    MemoryBarrierBits barreraBefore_;
    MemoryBarrierBits barreraAfter_; 
    MemoryBarrierBits barreraBefore () const { return barrerasBefore_; } 
    MemoryBarrierBits barreraAfter () const { return barreraAfter_; }
     bool isAtomicAccess () const { return (barreras antes_ | barrera después_)! = MembarNobits; } 
};

 

错误 error: ‘class js::jit::MAsmJSAtomicBinopHeap’ has no member named ‘needsBoundsCheck’; did you mean ‘isBoundsCheck’?
     if (mir->needsBoundsCheck()) {
              isBoundsCheck
No hace falta decir que el compilador dejó que el compilador lo cambiara. needsBoundsCheck () se reemplaza con isBoundsCheck ()

 Ya está. Firefox está en     obj-mips64el-unknown-linux-gnu / dist / bin .

 

Supongo que te gusta

Origin www.cnblogs.com/lijiabin-bj/p/12751654.html
Recomendado
Clasificación