AIXThis forum is for the discussion of IBM AIX.
eserver and other IBM related questions are also on topic.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
I'm finally able to use the AIX boxes I acquired. I downloaded some linux rpms from the IBM website. I'm able to use them when I need them, but I don't seem to be able to compile. Actually, it's the ./configure command that isn't working for me. The end of the error file shows this:
BEGIN /tmp/ffmpeg-conf-9089-307414-1958.c
1 int main(){
2 return 0;
3 }
END /tmp/ffmpeg-conf-9089-307414-1958.c
gcc -fomit-frame-pointer -c -o /tmp/ffmpeg-conf-17416-307414-11471.o /tmp/ffmpeg
-conf-9089-307414-1958.c
gcc -Wl,--warn-common -o /tmp/ffmpeg-conf-31953-307414-10860 /tmp/ffmpeg-conf-17
416-307414-11471.o -lm
ld: 0706-012 The -- flag is not recognized.
ld: 0706-012 The -w flag is not recognized.
ld: 0706-012 The -a flag is not recognized.
ld: 0706-027 The -n flag is ignored.
ld: 0706-012 The -- flag is not recognized.
ld: 0706-012 The -c flag is not recognized.
collect2: ld returned 255 exit status
C compiler test failed.
Is there any way to work around this? Am I just out of luck, or is there something I'm missing here?
Are you running Linux on the box or AIX? These are two different operating systems. "Linux RPMs" aren't going to work on "AIX".
The fact that the box may originally have had AIX doesn't make it an "AIX" box. You need to be a little clearer in what you're talking about. You don't load Linux on top of AIX - you replace AIX with Linux if you want it to run Linux.
Note that you may be able to compile open source programs on AIX but the C you likely got by default with AIX isn't "gcc" (GNU C Compiler). You'd need to first install gcc as most open source packages are built to work with gcc and associated libraries. That doesn't mean other C compilers wouldn't work but that you might have to spend a lot of effort making them work.
I have an old HP PA-RISC system that was built for HP-UX (HP's UNIX like AIX is IBM's UNIX). I was able to install Debian on that (using the HPPA build) but once I did that it was no longer an HP-UX box.
gcc is actually on the system, I have discovered, so I'm going to quit trying to use the "Linux" version I installed. I did successfully install Openssl and Openssh from source this morning so that tells me gcc does work. I may need to try compiling ffmpeg again using the AIX gcc and recheck the error log.
To be really specific, the version of AIX I'm using is '5.2'. I guess I really need to be asking this question at the ffmpeg site.
Open Source Software (OSS) can run on many different operating systems including the OSS operating system known as Linux which is where much of it was developed.
Linux != AIX
RPM = RedHat package manager which is ONE way of bundling and distributing sofware pacakges used for OSS. There are other ways of bundling and distributing packages that are used on various operating systems. RPM isn't even the one used on all Linux distros let alone all operating systems.
Linux != AIX
The fact that you have an RPM of an OSS for AIX does NOT make it a "Linux" software. It is simply an OSS "ported" to AIX.
Linux != AIX
You are going to get some really bad advice (not to mention a little derision) if you persist in calling it "Linux on AIX".
Linux != AIX
You can run EITHER Linux OR AIX on your hardware. You are NOT running both.
Linux != AIX
IBM wrote AIX. IBM also contributes to and pushes Linux as a platform but this also does NOT make AIX and Linux the same thing.
Linux != AIX
(For everyone else reading this - I'm leaving out virtualization and dual boot on purpose as it would obviously just confuse the OP more than he already is.)
Linux != AIX
So if you take nothing else away from all of this please take away this simple fact:
Apparently IBM is confused then. It's their web page.
Yes, I understand that Linux is the kernel which AIX doesn't run on. If you would get off that subject, perhaps someone could take a stab at answering my question which really has nothing to do with Linux. Oh, that was your point?
Wine allows users to run Windows programs on Linux. Windows != Linux.
Can we please get off this AIX != Linux issue and get to the real question? Why is my attempt to configure ffmpeg failing, and what can I do about it? As I mentioned in my last post, I'm going to try again with the native gcc and check the error file again. Then I'm going to go to the ffmpeg site to try to get help there.
My goal is to get ffmpeg running on my AIX IBM RS/6000 PowerPC workstations.
Just as the C compiler that comes with AIX is not necessarily GCC it is also likely the linker (ld) is not the OSS linker.
The errors you got clearly indicate the ld you're using doesn't allow for the flags the configure/make would like to use.
If you type "man ld" you may be able to see what options the ld you're running does allow.
In this line of your output:
gcc -Wl,--warn-common -o /tmp/ffmpeg-conf-31953-307414-10860 /tmp/ffmpeg-conf-17416-307414-11471.o -lm
-Wl,--warn-common = Pass the flag, --warn-common, to the linker.
You then see the linker complain:
ld: 0706-012 The -- flag is not recognized.
ld: 0706-012 The -w flag is not recognized.
ld: 0706-012 The -a flag is not recognized.
ld: 0706-027 The -n flag is ignored.
ld: 0706-012 The -- flag is not recognized.
ld: 0706-012 The -c flag is not recognized.
collect2: ld returned 255 exit status
What the above means is that the ld you're running doesn't understand "--" (most OSS programs allow for -- arguments but most UNIX expect only a single -). It then says -w, -a, -n and -c don't work for the linker. Notices that w, a, n and c all appear in "warn-common" so it took each of the characters as individual flags rather than taking the whole string as a flag.
This is the way it normally works - you can almost always combine multiple "-"something flags into a single string prended by a "-". e.g.
ls -l -a -d = ls -lad (or even ls -dal).
You should download the OSS rpm that has "ld" in it so you get the ld that understands "--warn-common". On my Fedora System "ld" is part of the binutils package. On the IBM site you were using they may have an OSS "ld" since it is an add on for AIX (presumably) OR they may have binutils.
Note that binutils contains more than ld though.
On my FC4 system binutils contains the list of files below. If you're running AIX rather than Linux on this server you may wish to save off copies of the following before you load binutils OR load binutils into an alternate directory and set your PATH according to where you loaded it:
Actually, that was quite helpful. Thank you. It seems obvious, now that you've explained the double dash thing. I guess -r, -o and -m are recognized options. I did install the binutil rpm from the IBM web page, but apparently ld didn't come with it. I do have a working gcc.
I got ticked off when you kept repeating yourself like I was a complete idiot. I've learned a few things in life including programming in binary and assembly code. You could have said it once and then given me your explanation. I didn't even bother to read the rest of it because I felt like I was being talked down to.
I admit the box is AIX. It is ! Linux. If it was Linux I would have had the thing compiled by now. In fact, I installed it in Slackware this morning.
I'm sorry for being argumentative. You are right, I was wrong.
I just want to get this installed because that's the main thing I want to use it for. I frequently convert avi's to mpeg to make dvd's out of them. I hate tying up my PC to do that. With 2 Gigs of Ram and a 64 bit bus, I'm hoping that the RS/6000 may even do it faster. The processor is a little slower, but the PC is Rambus with not much Ram.
configure is usually a script (text file) so you should be able to just modify the gcc statement to leave out the "Wl,--warn-common" it tries to do simply by editing the file.
You might also want to look through the configure (and subsequent makefile created by configure) for other gotchas.
Did you check the gcc you downloaded to see if it contained its own ld? It seems if this was a port to AIX they might have included one there instead of binutils. If so by setting your PATH variable to have that ld's directory BEFORE the AIX native ld's directory you can get it to work.
"rpm -ql gcc" should show you which files gcc installed.
P.S. I was probably a bit to pedantic in my later response but my first one really was trying to find out what you were using because it seemed possible you could be either AIX or a Linux ported to the RISC on the system that originally had AIX.
Last edited by MensaWater; 06-15-2007 at 01:08 PM.
configure is usually a script (text file) so you should be able to just modify the gcc statement to leave out the "Wl,--warn-common" it tries to do simply by editing the file.
You might also want to look through the configure (and subsequent makefile created by configure) for other gotchas..
I did just find something similar to that in the ffmpeg-devel mailing list. They didn't go into detail, though, so I didn't know to just edit the configure file. I hope it is that easy. I'll try that when I get home.
Quote:
Originally Posted by jlightner
Did you check the gcc you downloaded to see if it contained its own ld? It seems if this was a port to AIX they might have included one there instead of binutils. If so by setting your PATH variable to have that ld's directory BEFORE the AIX native ld's directory you can get it to work.
"rpm -ql gcc" should show you which files gcc installed..
The rpms on the IBM site seem to install everything at /opt/freeware. I didn't find ld there, but I'll check with the command given above. I'm actually using a version of gcc that was already on the computer(I think). I guess it could be a symlink. The gcc I'm using is in the /usr folder somewhere.
Quote:
Originally Posted by jlightner
P.S. I was probably a bit to pedantic in my later response but my first one really was trying to find out what you were using because it seemed possible you could be either AIX or a Linux ported to the RISC on the system that originally had AIX.
Like I said, what's most important to me is getting this thing installed and the help you are providing more than makes up for it. I appreciate that you posted the help in spite of the disagreement.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.