个人工具

“UbuntuHelp:CompilingEasyHowTo”的版本间的差异

来自Ubuntu中文

跳转至: 导航, 搜索
第21行: 第21行:
 
https://help.ubuntu.com/community/IconsPage?action=AttachFile&do=get&target=IconNote.png
 
https://help.ubuntu.com/community/IconsPage?action=AttachFile&do=get&target=IconNote.png
 
* You may find other packages needed for certain packages. Read any available documentation.  
 
* You may find other packages needed for certain packages. Read any available documentation.  
You should then build a common directory for yourself where you'll be building these packages. I recommend creating <code><nowiki>/usr/local/src</nowiki></code>, but really you can put it anywhere you want.  Make sure this directory is writable by your primary user account, by running  
+
You should then build a common directory for yourself where you'll be building these packages. I recommend creating <pre><nowiki>/usr/local/src</nowiki></pre>, but really you can put it anywhere you want.  Make sure this directory is writable by your primary user account, by running  
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo chown username /usr/local/src
 
sudo chown username /usr/local/src
第35行: 第35行:
 
.tar.bz2 -- they are just like .zip files on Windows or .sit on MacOSX
 
.tar.bz2 -- they are just like .zip files on Windows or .sit on MacOSX
 
if that analogy helps you. If the program you want to install comes in
 
if that analogy helps you. If the program you want to install comes in
this form, you should download it into the <code><nowiki>/usr/local/src</nowiki></code>
+
this form, you should download it into the <pre><nowiki>/usr/local/src</nowiki></pre>
 
directory we made in step one. If your tarballs is a .gz to extract the
 
directory we made in step one. If your tarballs is a .gz to extract the
 
files you'll run  
 
files you'll run  
第48行: 第48行:
 
repository, the developers will generally provide instructions on how
 
repository, the developers will generally provide instructions on how
 
to do this on their website. If you already installed the packages
 
to do this on their website. If you already installed the packages
listed on step one, you just need to change to your <code><nowiki>/usr/local/src</nowiki></code>
+
listed on step one, you just need to change to your <pre><nowiki>/usr/local/src</nowiki></pre>
directory (<code><nowiki>cd /usr/local/src</nowiki></code>) and run the commands that are listed. The procedure will vary
+
directory (<pre><nowiki>cd /usr/local/src</nowiki></pre>) and run the commands that are listed. The procedure will vary
 
from program to program, so I can't help you here but with the given
 
from program to program, so I can't help you here but with the given
 
packages the instructions they prove should work smoothly.
 
packages the instructions they prove should work smoothly.
 
=== Step 3: Resolving Dependencies. ===
 
=== Step 3: Resolving Dependencies. ===
 
One nice thing about modern Linux distributions is they take care of dependencies for the
 
One nice thing about modern Linux distributions is they take care of dependencies for the
user. That is to say, if you want to install a program, the <code><nowiki>apt</nowiki></code>
+
user. That is to say, if you want to install a program, the <pre><nowiki>apt</nowiki></pre>
 
program will make sure it installs all needed libraries and other
 
program will make sure it installs all needed libraries and other
 
dependant programs so installing a program is never
 
dependant programs so installing a program is never
第62行: 第62行:
 
users who often give up in frustration for not being able to figure out
 
users who often give up in frustration for not being able to figure out
 
what they need to get.
 
what they need to get.
To prepare, install the package <code><nowiki>apt-file</nowiki></code>, and then run <code><nowiki>sudo apt-file update</nowiki></code>.
+
To prepare, install the package <pre><nowiki>apt-file</nowiki></pre>, and then run <pre><nowiki>sudo apt-file update</nowiki></pre>.
 
This will download a list of all the available packages and all of the files those packages contain, which as you might expect can be a '''very''' large list.  It will not provide any feedback while it loads, so just wait.
 
This will download a list of all the available packages and all of the files those packages contain, which as you might expect can be a '''very''' large list.  It will not provide any feedback while it loads, so just wait.
The <code><nowiki>apt-file</nowiki></code> program has some interesting functions, the two most useful are <code><nowiki>apt-file search</nowiki></code> which searches for a particular filename, and <code><nowiki>apt-file list</nowiki></code> which lists all the files in a given package.  (Two explanations: [http://debaday.debian.net/2007/01/24/apt-file-search-for-files-in-packages-installed-or-not/ 1] [http://www.debianhelp.co.uk/findfile.htm 2])
+
The <pre><nowiki>apt-file</nowiki></pre> program has some interesting functions, the two most useful are <pre><nowiki>apt-file search</nowiki></pre> which searches for a particular filename, and <pre><nowiki>apt-file list</nowiki></pre> which lists all the files in a given package.  (Two explanations: [http://debaday.debian.net/2007/01/24/apt-file-search-for-files-in-packages-installed-or-not/ 1] [http://www.debianhelp.co.uk/findfile.htm 2])
 
To check the dependencies of your program, change into the directory
 
To check the dependencies of your program, change into the directory
you created in step two (<code><nowiki>cd /usr/local/src</nowiki></code>). Extracting the tarball or downloading from
+
you created in step two (<pre><nowiki>cd /usr/local/src</nowiki></pre>). Extracting the tarball or downloading from
cvs/subversion will have made a subdirectory under /usr/local/src that
+
cvs/subversion will have made a subdirectory und<pre><nowiki>/usr</nowiki></pre>cal/src that
 
contains the source code. This newly-created directory will contain a
 
contains the source code. This newly-created directory will contain a
 
file called "configure", which is a script to make sure that the
 
file called "configure", which is a script to make sure that the
program can be compiled on your computer. To run it, run the command <code><nowiki>./configure</nowiki></code> ~-See footnote [[1 1]]-~
+
program can be compiled on your computer. To run it, run the command <pre><nowiki>./configure</nowiki></pre> ~-See footnote [[1 1]]-~
 
This command will check to see if you've got all the programs needed to
 
This command will check to see if you've got all the programs needed to
 
install the program -- in most cases you will not, and it will error
 
install the program -- in most cases you will not, and it will error
第88行: 第88行:
 
sudo apt-get install requiredpackage
 
sudo apt-get install requiredpackage
 
</nowiki></pre>   
 
</nowiki></pre>   
Then try running <code><nowiki>./configure</nowiki></code> again, and see if it works.  If you get to a bunch of text that finishes with <code><nowiki>config.status: creating Makefile</nowiki></code> followed by no obvious error messages, you're ready for the next steps.
+
Then try running <pre><nowiki>./configure</nowiki></pre> again, and see if it works.  If you get to a bunch of text that finishes with <pre><nowiki>config.status: creating Makefile</nowiki></pre> followed by no obvious error messages, you're ready for the next steps.
 
=== Step 4: Build and install. ===
 
=== Step 4: Build and install. ===
 
If you got this far, you've done the hardest part already.  Now all you need to do is run the command  
 
If you got this far, you've done the hardest part already.  Now all you need to do is run the command  
第102行: 第102行:
 
</nowiki></pre>
 
</nowiki></pre>
 
and the final stage of the installation will run. When finished
 
and the final stage of the installation will run. When finished
(it shouldn't take long), your application will be installed to <code><nowiki>/usr/local/bin</nowiki></code> and you should be able to run it without problems.
+
(it shouldn't take long), your application will be installed to <pre><nowiki>/usr/local/bin</nowiki></pre> and you should be able to run it without problems.
 
https://help.ubuntu.com/community/IconsPage?action=AttachFile&do=get&target=IconNote.png
 
https://help.ubuntu.com/community/IconsPage?action=AttachFile&do=get&target=IconNote.png
 
* If this all seems way too hard for you, don't fret. You're using Ubuntu
 
* If this all seems way too hard for you, don't fret. You're using Ubuntu
第121行: 第121行:
 
* Easy meaning "easier than tearing your hair out and then screaming about how much Linux sucks while running around the room". Not '''actually''' easy.
 
* Easy meaning "easier than tearing your hair out and then screaming about how much Linux sucks while running around the room". Not '''actually''' easy.
 
[[Anchor(1)]]
 
[[Anchor(1)]]
[1] if you run <code><nowiki>./configure</nowiki></code>
+
[1] if you run <pre><nowiki>./configure</nowiki></pre>
 
without any options, you will use the default settings for the program.
 
without any options, you will use the default settings for the program.
 
Most programs have a range of settings that you can enable or disable,
 
Most programs have a range of settings that you can enable or disable,
if you are intersted in this check the <code><nowiki>README</nowiki></code> and <code><nowiki>INSTALL</nowiki></code> files found in the directory after decompressing the tar file. You can check the developer documentation and in many cases <code><nowiki>./configure --help</nowiki></code> will list some of the key configurations you can do.  A very common options is to use <code><nowiki>./configure --prefix=/usr</nowiki></code> which will install your application into <code><nowiki>/usr</nowiki></code> instead of <code><nowiki>/usr/local</nowiki></code> as my instructions do.
+
if you are intersted in this check the <pre><nowiki>README</nowiki></pre> and <pre><nowiki>INSTALL</nowiki></pre> files found in the directory after decompressing the tar file. You can check the developer documentation and in many cases <pre><nowiki>./configure --help</nowiki></pre> will list some of the key configurations you can do.  A very common options is to use <pre><nowiki>./configure --prefix=/usr</nowiki></pre> which will install your application into <code><nowiki>/usr</nowiki></code> instead of <pre><nowiki>/usr/local</nowiki></pre> as my instructions do.
 
=== Comments ===
 
=== Comments ===
 
You may find [[UbuntuHelp:CheckInstall|CheckInstall]] is helpful and easy to use.
 
You may find [[UbuntuHelp:CheckInstall|CheckInstall]] is helpful and easy to use.

2007年12月6日 (四) 10:08的版本


Compiling things on Ubuntu Linux the Easy Way

Let's say you are a moderately experienced Linux user, and you want to install an application off the Internet but it doesn't have a nice package that works on your system. A lot of users, even quite experienced ones, have issues with going from the tarball to the installed program because they just do not know the fairly easy steps required to get the job done. But it's only easy if you already know how to do it! So, here's a quick guide how to install stuff from developer sites.

Step 1: Prep your system for building packages

By default, Ubuntu does not come with the tools required. You need to install the package build-essential which can be found on the install cd or in the repositories.

sudo apt-get install build-essential

And since you may want to get code from some projects with no released version, you should install the packages cvs and subversion.

sudo apt-get install cvs subversion

IconsPage?action=AttachFile&do=get&target=IconNote.png

  • You may find other packages needed for certain packages. Read any available documentation.
You should then build a common directory for yourself where you'll be building these packages. I recommend creating
/usr/local/src
, but really you can put it anywhere you want. Make sure this directory is writable by your primary user account, by running
sudo chown username /usr/local/src

and just to be safe

sudo chmod u+rwx /usr/local/src

After you've done this, you're set up to start getting the programs you need.

Step 2: Getting the software you want

Most of the software you'll generally want comes from released tarballs. These are just compressed archives in the form of .tar.gz or .tar.bz2 -- they are just like .zip files on Windows or .sit on MacOSX if that analogy helps you. If the program you want to install comes in

this form, you should download it into the
/usr/local/src

directory we made in step one. If your tarballs is a .gz to extract the files you'll run

tar xzvf tarballname.tar.gz

and for bz2 the similar command.

tar xjvf tarballname.tar.bz2

In the rare case of getting a program from a cvs or subversion repository, the developers will generally provide instructions on how to do this on their website. If you already installed the packages

listed on step one, you just need to change to your
/usr/local/src
directory (
cd /usr/local/src
) and run the commands that are listed. The procedure will vary

from program to program, so I can't help you here but with the given packages the instructions they prove should work smoothly.

Step 3: Resolving Dependencies.

One nice thing about modern Linux distributions is they take care of dependencies for the

user. That is to say, if you want to install a program, the
apt

program will make sure it installs all needed libraries and other dependant programs so installing a program is never more difficult then just specifying what you need and it does the rest. Unfortunately with tarballs this is not the case, and you'll have to do it manually. It's this stage that trips up even some fairly experienced users who often give up in frustration for not being able to figure out what they need to get.

To prepare, install the package
apt-file
, and then run
sudo apt-file update
.

This will download a list of all the available packages and all of the files those packages contain, which as you might expect can be a very large list. It will not provide any feedback while it loads, so just wait.

The
apt-file
program has some interesting functions, the two most useful are
apt-file search
which searches for a particular filename, and
apt-file list
which lists all the files in a given package. (Two explanations: 1 2)

To check the dependencies of your program, change into the directory

you created in step two (
cd /usr/local/src
). Extracting the tarball or downloading from cvs/subversion will have made a subdirectory und
/usr
cal/src that

contains the source code. This newly-created directory will contain a file called "configure", which is a script to make sure that the

program can be compiled on your computer. To run it, run the command
./configure
~-See footnote 1 1-~

This command will check to see if you've got all the programs needed to install the program -- in most cases you will not, and it will error out with a message about needing a program. If this happens, the last line of output will be something like

configure: error: Library requirements (gobbletygook) not met, blah blah blah stuff we don't care about

But right above that it will list a filename that it cannot find, and in my experience, most situations will list a filename ending in ".pc". What you need to do then is to run

apt-file search missingfilename.pc

which will tell you which Ubuntu package the missing file is in. You can then simply install the package using

sudo apt-get install requiredpackage
Then try running
./configure
again, and see if it works. If you get to a bunch of text that finishes with
config.status: creating Makefile
followed by no obvious error messages, you're ready for the next steps.

Step 4: Build and install.

If you got this far, you've done the hardest part already. Now all you need to do is run the command

sudo make

which does the actual building (compiling) of the program. IconsPage?action=AttachFile&do=get&target=IconClockYellow.png

  • If it's a large program or if you've got a very slow computer, go and get a cup of coffee or something.

When its done, run

sudo make install

and the final stage of the installation will run. When finished

(it shouldn't take long), your application will be installed to
/usr/local/bin
and you should be able to run it without problems.

IconsPage?action=AttachFile&do=get&target=IconNote.png

  • If this all seems way too hard for you, don't fret. You're using Ubuntu

Linux after all, and it has all of the programs that you actually need to get your work done already packaged for you. If there isn't a package out there, the odds are that you really don't need the program and within a few months someone will have packaged it for you. The only programs you actually need to build and compile like this are programs that are new and perhaps not yet stable or ready for your destkop. If you think this procedure is too hard well maybe you ought to reconsider why you want to do this and just wait a few months for the next stable release. But it can be a good learning experince for you. If your desired package is quite important and you think it deserves to be in Ubuntu properly, perhaps contact the Masters of the Universe and see if they can do the hard work for you -- if they package something, anyone can install it without having to go through this procedure. But if you can get through all this, you're well on your way to becoming an expert Linux user -- you'd be surprised how easy all this seems after you've done it just a few times. Good luck! IconsPage?action=AttachFile&do=get&target=IconNote.png

  • Easy meaning "easier than tearing your hair out and then screaming about how much Linux sucks while running around the room". Not actually easy.

Anchor(1)

[1] if you run
./configure

without any options, you will use the default settings for the program. Most programs have a range of settings that you can enable or disable,

if you are intersted in this check the
README
and
INSTALL
files found in the directory after decompressing the tar file. You can check the developer documentation and in many cases
./configure --help
will list some of the key configurations you can do. A very common options is to use
./configure --prefix=/usr
which will install your application into /usr instead of
/usr/local
as my instructions do.

Comments

You may find CheckInstall is helpful and easy to use. For a more advanced yet not so easy Howto, have a look at CompilingSoftware.

  • Is there a reason to recommend command line tools instead of tools like file-roller?
  • The "easy" tutorial should be the default one (at CompilingSoftware), and the "advanced" tutorial should be at a name like CompilingSoftwareAdvanced. The target audience for a document like this is people who have never done any of this stuff before. Make the default document as easy to use as possible.